hidemium's blog

日々学んだことをアウトプットする。

リポジトリ共有式Pull Requestの手順について

GitHubを使った開発の方法であるリポジトリ共有式のPull Requestの手順を整理してみました。

全体の流れ

大まかに以下のような手順になります。

  • ローカルにclone
  • ブランチ作成 (名前はissue[Issueの番号]とか※)
  • 修正完了後、Push
  • masterにプルリク作成
  • 確認したらmasterにマージ

※本家GitHub Flowでは説明的なブランチを作成するようですが。

ソースコードの取得

新たにcloneする場合

$ git clone <リポジトリ>  #ソースコードを取得

以前にcloneをしたことがある場合

$ git checkout master                     #最新のリモートリポジトリを取得
$ git branch -a                           #ブランチを確認
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
$ git pull     #手元のソースコードを最新化

開発作業の流れ

1. 以下のコマンドでブランチを作成し、 リモートにpushします。

$ git branch     現在のブランチを確認
* master
$ git checkout -b issue1               #Pull Request用ブランチを作成
$ echo "# Hello, Pull Request" > README.md     #見出しを変更
$ git add README.md                            #変更をadd
$ git commit -m "Update README.md"             #変更をcommit
$ git push origin issue1                #リモートにpush

2. リポジトリを開いて、Pull Requestsをクリックします。
3. New pull requestをクリックします。
4. ブランチを指定して、Create pull requestをクリックし、masterに対してプルリクを実行します。

Pull Requestの確認

1. 以下のコマンドでチェックアウトし、 動作を確認します。

$ git fetch                                #変更を取得
$ git branch -a                            #ブランチを確認
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/issue1
$ git checkout -b issue1 origin/issue1     #チェックアウト
#ここから動作確認

2. リポジトリを開いて、Pull Requestsをクリックします。
3. Mergeをクリックし、masterに対してマージを実行します。

ブランチの削除

マージが出来たら、もうブランチが不要になるので消しておきます。
リモートブランチの削除はプルリクエストの画面からもできます。

$ git checkout master
$ git branch -d issue1      #ローカルブランチの削除
$ git push origin :issue1   #リモートブランチの削除

マージ後にリモートブランチが消えてもgit branch -aに出てくる場合は、以下のコマンドを実行します。

$ git fetch --prune

最初に戻る

ソースコードの取得」に戻り、手元のソースコードを最新化します。

トピックブランチで作業中に、master ブランチで変更があった場合

作業中のトピックブランチにいる状態で以下のコマンドを実行します。

$ git merge master