Github Fork and Pull Request

いつも忘れてしまうので、GithubであるプロジェクトをForkしてからPull Requestをするまでの流れをメモしたいと思います。今回、実際に私がこの流れを使っているCordova (PhoneGap) ドキュメントのプロジェクト、 https://github.com/apache/incubator-cordova-docs を例にやっていきたいと思います。

1. Forkする

GithubでForkしたいプロジェクトまで行って、右上にあるForkボタンを押します。今回、 https://github.com/apache/incubator-cordova-docs をForkしたので、私のGithubアカウントkeiko713上では https://github.com/keiko713/incubator-cordova-docs というリポジトリが作成されます。

2. 自分のPCにcloneする

ターミナルでcloneしたいフォルダまで行って実行(そのフォルダ内にincubator-cordova-docsという名前のフォルダが作成されます)

$ git clone  https://github.com/keiko713/incubator-cordova-docs.git

3. branchを作る(新規ブランチ作成とそのブランチへの切りかえ)

$ cd incubator-cordova-docs
$ git checkout -b [your_branch_name]

4. ファイルを編集する

5. commitする

新規に作成したファイルの場合はgit addするのを忘れずに

$ git commit -am 'Translate files related to hoge'

6. pushする

$ git push origin [your_branch_name]

4-6を繰り返す

7. upstream(Fork元リポジトリ)の設定

Forkした自分のリポジトリ (https://github.com/keiko713/incubator-cordova-docs) は、Fork元のリポジトリ (https://github.com/apache/incubator-cordova-docs) の変更内容を自動更新しません。なので、Fork元のリポジトリの最新情報を自分のリポジトリに反映させる必要があります。

ここで、Forkした自分のリポジトリには、大抵デフォルト名としてoriginという名前がついています。新しくFork元のリポジトリにupstreamという名前をつけて追加しましょう。

$ git remote add upstream https://github.com/apache/incubator-cordova-docs

8. Fork元リポジトリの最新を取得しlocalのmasterを更新

$ git checkout master # branchをmasterに変更
$ git pull upstream master # upstreamからpullして最新を取得
$ git push origin master # localのmasterをoriginにpush(オプション)

9. branchをrebase

$ git checkout [your_branch_name] # branchを作成したbranchに変更
$ git rebase master # branchをrebase

10. branchをoriginにpush

$ git push -f origin [your_branch_name]

11. Pull Requestを作成

GithubでForkした自分のリポジトリ (https://github.com/keiko713/incubator-cordova-docs) に行き、左側にあるボタンよりbranchを[your_branch_name]に切り替えます。右上にあるPull Requestボタンを押して、Pull Requestを送信します。