GitHubでPull Requestを修正して取り込む
GitHubでPull Requestを受けることがあります。しかし、
- 微妙にコーディングスタイルが違う
- 複数のコミットをまとめて欲しい
- 開発が進みコンフリクトが発生しマージできない
などの場合があります。
そのような場合、Pull Requestの送信者に修正を依頼し待つという方法があります。しかし、さっさと取り込んでしまいたいこともあります。
ということで、Pull Requestされたものを勝手に修正してきれいにして取り込む方法です。
Pull Requestを修正してマージする
1. Pull RequestのURLを取得する
2. Pull Requestのパッチファイルを取得して適用する
Pull RequestのURLの最後に.patch
を追加したURLを取得して、git am
でパッチを適用します。
$ curl -L https://github.com/kenjis/php-framework-benchmark/pull/2.patch | git am
Pull Requestがマージ可能ならこれでコミットされた状態になります。
ここで、必要な修正を歴史改竄して加えます。git add
してgit commit –amend
したり、コミットをまとめるならここでgit rebase
します。
後はgit push
するだけです。
3. パッチ適用が失敗した場合
もし、パッチの適用が失敗したら、パッチファイルが保存されるので、patchコマンドで再度当ててみます。
$ patch -p1 < .git/rebase-apply/patch
当然一部または全部が失敗します。パッチ適用をあきらめる場合は、git am --abort
でamセッションを中止します。
手動で修正して対応したら、git add
してgit am --continue
でamセッションを完了させます。
$ git add .
$ git am --continue
これで、修正済みのPull Requestがきれいにコミットされました。
後はgit push
するだけです。
パッチファイルを作成する
逆に、git am
で適用できるパッチファイルを作成するには、以下のようにします。
HEADから3つのコミットのパッチファイルを作成します。1コミットずつ1ファイルが作成されます。
$ git format-patch HEAD~3
1つのファイルにまとめたい場合は、以下のようにします。
$ git format-patch HEAD~3 --stdout > patch
参考
Date: 2015/03/28