回答:
15.08.2016以降、 GitHubでは、GUIを介してプルリクエストのターゲットブランチを変更できます。Edit
タイトルの横をクリックし、ドロップダウンからブランチを選択します。
オープンプルリクエストのベースブランチを変更できるようになりました。プルリクエストを作成したら、ベースブランチを変更して、プルリクエストの変更が別のブランチと比較されるようにすることができます。新しいブランチを正しいベースブランチで開くのではなく、元のプルリクエストのベースブランチを変更することにより、貴重な作業と議論を続けることができます。
提出者はプルリクエストを発行するときにそれを変更できますが、一度発行すると変更できません。
一方、ブランチとプッシュを手動でマージすることができます。これは、誤ってターゲットに設定されたプルリクエストに対して半定期的に行います。
プルリクエストのコンポーネントを操作するのに役立つhub
宝石が見つかるかもしれません。
そのgemは、手動プロセスを完了します。
git merge --no-ff ...
@GuillermoMansillaが彼の回答で言及しているように使用することをお勧めします。
他の回答で述べられているハブgemを使用する代わりに、コマンドラインを使用してローカルのプルリクエストをマージすることもできます。これにより、次のことが可能になります。
$ git fetch origin
$ git checkout *target_branch*
$ git merge pr/XXX
$ git push origin *target_branch*
上記のコマンドは、.git/config
ファイルに次の行を最初に追加した場合にのみ直接機能します。
fetch = +refs/pull/*/head:refs/remotes/symbolic_name_origin_or_upstream/pr/*
これにより、すべてのプルリクエストをダウンロードできます。これは巨大なリポジトリでは望ましくない可能性があるため、GitHubはgit fetch origin pull/ID/head:BRANCHNAME
構文を特徴とするように命令を変更しました。これにより、構成ファイルの変更が回避され、その単一のプルリクエストのみがダウンロードされます。
既存のものではないため、既存のプルリクエストを変更することはできませんが、関連するソースリポジトリがまだ存在する場合は、新しいプルリクエストを簡単に作成できます。
送信者のリポジトリに移動し、同じコミットを使用して自分のリポジトリに新しいプルリクエストを作成しますが、正しいターゲットブランチを正しく設定していることを確認してください。
次に、自分のリポジトリに戻り、新しいプルリクエストを受け入れます。出来上がり!
ダニエルピットマンの解決策には何の問題もありませんが、私はそれらのマージを「早送りなし」、つまりステップ番号3を次のように変更するものとして扱います。
git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}
を使用する--no-ff
と、履歴が読みやすくなります。$n
コミットはからのもの$branch
であることが明確に示されます。また、そのブランチで行われた何かを元に戻す必要がある場合にも、それはあなたの人生を楽にします。
eoinocの質問にも回答し、追加のヒントを与えるには:
マージを行った後、git cliはメッセージを書き込むように要求します。通常、一般的なメッセージは次のようなものを表示します
リモート追跡ブランチ 'user / their-branch'をyour-branchにマージします
必ずそのメッセージを編集し、プルリクエスト番号への参照を含めてください。つまり:(プルリクエスト番号が123であると仮定)
リモート追跡ブランチ 'user / their-branch'をyour-branchにマージします
参照番号#123何でも解決...
したがって、次にgithubの問題/プル要求ページにアクセスして、その特定のプルリクエストを確認すると、マージを行った場所をコミットするためのリンクを含むメッセージが表示されます。
これが私が意味することのスクリーンショットです。