akiranetの日々淡々と頑張っていこう

akiranetのコンピューターと遊ぶ

自分的Git, GitHubの使い方

ak1raです!
研究室のプロジェクトやインターン先でGitHubを使ってから、1人GitHubFlowで遊んでいます(苦笑い)
誰か一緒にやろうぜ
その本音を実現するために、後輩に教えた際に詰まったりしていて、自分の理解が甘いことに気づきました。 そこで今回は、ブランチを切ってプルリクエストを送るまでのやり方とエラーの対処を書いていこうと思います!

PullRequestを作ろう!

Pull Requestってなんぞ?

コードレビューしたり、〇〇の機能を実装するにはどうすればいいか、問題は何かなどを書き、
コードに関するコミュニケーションの場というイメージです。 他の人のリポジトリを自分のGitHubアカウントにFork(コピー)してきて、変更を加えて、それを元のリポジトリに取り込んでもらうようにリクエストを送信する
言葉ではわかりにくいので、自分が作ったPR(Pull Request)を以下に載せます。

f:id:akiranet:20170524141155p:plain

これは自分流なので、書き方は自分や開発グループの方針に従えばいいと思います。 私は、5W1Hを基に、何の機能なのか(WHAT)・どうやって実装するか(HOW)を主に書いてます! サーバーや機能に問題あったときは、その問題がいつ起きたかなどは(WHEN)で書くなどもできると思う。

PRの方法

今回説明するのは、他人のGitHubにPRを作る方法をやっていこと思います。 また使っているのは自分が作ったHubotのコードがあるGitHub(https://github.com/MaRuG/accueil)です!

1. 他人のGitHubのサイトから自分のGitHubにForkします

f:id:akiranet:20170524142903p:plain

上図の右上にある「fork」します。 そうすることで、自分のGitHubリポジトリにコピーできます。

2. 自分のGitHubを自分のPC(ローカル)にcloneします

xxxxxxxxxxには自分のユーザ名
$ git clone https://github.com/xxxxxxxxx/accueil.git

3. ブランチをきる &ごちゃごちゃ編集する & GItHub push しよう

まずはブランチを切りましょう!
ところでブランチってなんですか??ってなりますよね。
ブランチとは、履歴の流れを分岐して記録していくためのものです。分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができます。

http://www.backlog.jp/git-guide/img/post/stepup/capture_stepup1_1_1.png

ブランチをきることで、並行作業をやりやすくなります!

$git checkout -b xxxxxxx xxxxxxxxには、任意のブランチ名を入れましょう! ここで-bは、新規のブランチを作り、そのブランチに移ります

また、現在のブランチを確認するには以下のコマンドで確認できます。 $git branch

例として、README.mdを編集したとします。 そうしたら、以下の流れでGitHubにプッシュしましょう!

$ git remote add ooooo https://github.com/xxxxxxxxx/accueil.git
$ git add README.md
$ git commit -m "README.md コードの説明追加"
$ git push ooooo xxxxxxxxx 

oooooは任意のリモートリポジトリ名をかく xxxxxxxxxはブランチ名です。

4. ついにPRを作ろうぞ!

以前やったスクショで申し訳ない….
これは[train-info-delay]ブランチで作業した時の様子です! f:id:akiranet:20170524145053p:plain

[compare & pullrequest]をクリックして作れます!
PRの書き方は、上記でやった感じ!

コードレビューの文化は大切だと思います。

slackなどで誰かに見てもらって、typoなどないかを見てもらいます!
OKが出たら、masterにマージするようします。

以上が大まかなGitHubの使い方です!

エラー対処

git commitを取り消したい

直前のだったら、以下のように行う
$ git add reset --hard HEAD^
これだとファイルの変更箇所も取り消します。

変更箇所は残して、コミットしたことのみ消したい!
$ git reset --soft HEAD^
でできます!

HEAD^ -> 直前
HEAD^^ -> 二個前
commitのハッシュ値でも指定して取り消しできます

git commitの上書き

$git commit --amend

PRでコンフリクトされて、マージができない!?orz

これは、PRのところを見ればやりかたが書いてあるので、コマンドだけ以下に示します。

git fetch origin 
git checkout -b hoge-branch origin/hoge-branch
git merge master

conflictしているファイルのコード部分を修正。

git add xxxxx               // xxxxxはファイル名
git commit -m "〇〇"   // 〇〇はコメント

以上のことを行った後、PRのページを見るとマージできるようになってました!!

参考サイト

blog.qnyp.com www.backlog.jp

www-creators.com

eng-memo.hatenadiary.com

d.hatena.ne.jp