GithubでPull Requestするまで
参考にしたサイト
下記サイトのお作法でやってみた。 そのままだと、私の環境下ではpush時に403になったので、メモしておく。
Pull Requestしたいリポジトリからforkする
変更したいリポジトリのページの右上にあるforkボタンを押す。 自分のユーザー名/リポジトリ名 としてforkされる。
forkしたリポジトリをPCにcloneして、ブランチを切る
上記で作成されたユーザー名/リポジトリ名 な Github上のforkしたリポジトリにいき、 HTTPSに記載されているURLをコピーしてcloneする。
下記コマンドをPCで実行。
$ git clone https://github.com/自分のユーザー名/リポジトリ.git $ git checkout -b fix_hogehoge_issue
コード修正して、forkしたリポジトリに反映する
CONTRIBUTING辺りに記載されているコーディングルールやテスト有無などのお作法にしたがって修正・テスト。
$ emacs hoge.c $ git add hoge.c $ git commit -s -m "fix hogehoge issue"
このまま git pushすると403になったので、下記のようにユーザー名を含んだuriに変更してからpushした。
$ git remote set-url origin git@github.com:自分のユーザー名/リポジトリ.git $ git push origin fix_hogehoge_issue
下記はhttps版の場合。
$ git remote set-url origin https://ユーザー名@github.com/自分のユーザー名/リポジトリ.git $ git push origin fix_hogehoge_issue
Pull Requestを行う
再びGithubの自分のリポジトリからCompare & pull request を押す。
タイトルと本文を記載して、Send Pull Requestを押す。Markdownで修飾できる。 (この内容は公開されるようなので、気合が入る。)
mergeされたのでたぶんOK。
Pull Requestに対して修正依頼が来た場合
Pull Request元のbranchを修正すると、Pull Requestに反映される。
このブログの例の場合は、fix_hogehoge_issue について、
- ソース修正
- git add, commit, fix_hogehoge_issueをpush
すればよいようだ。
forkしたリポジトリをfork元のリポジトリに追従させる
fork元リポジトリをremoteに登録する。一回だけ行えばよい。
$ git remote add upstream git@github.com:オリジナル/リポジトリ.git
非推奨になりつつあるが、httpsの場合は下記。
$ git remote add upstream https://github.com/オリジナル/リポジトリ.git
fetchしてから、自分のfork元にpush。参照元にならってupstreamとした。
$ git checkout master $ git fetch upstream $ git pull upstream master:master $ git push origin master
git pull直後、git branch -v すると、[ahead 4]などの表示がなされる。
これはoriginから4つ進んでいることを意味するらしい。
conflictしたときは、そのときに考える。
ssh で接続する場合の補足
秘密鍵は0600 のパーミッションでないとパスフレーズが聞かれずエラーになる。 下記の接続テスト時にパスフレーズの入力がなされない場合はパーミッション設定のエラー。
$ ssh -T git@github.com