web-dev-qa-db-ja.com

Githubで、プルリクエストをデフォルトとは異なるブランチにマージします

プルリクエストがGithubでホストされている私のレポに届きます。デフォルトでは、masterブランチにマージされます。

どのブランチに変更をマージするかを変更する方法はありますか?

107
eoinoc

2016年8月15日現在 GitHubでは、GUIを介してプルリクエストのターゲットブランチを変更できます。タイトルの横にある[Edit]をクリックし、ドロップダウンからブランチを選択します。

screenshot

これで、オープンプルリクエストのベースブランチを変更できます。プルリクエストを作成した後、プルリクエストの変更が別のブランチと比較されるように、ベースブランチを変更できます。正しいベースブランチを使用して新しいプルリクエストを開くのではなく、元のプルリクエストのベースブランチを変更することで、貴重な作業と議論を続けることができます。

65
maliayas

送信者は、プルリクエストを発行すると変更できますが、一度発行すると変更できません。

一方、ブランチとプッシュを手動でマージすることもできます。これは、プルリクエストのターゲットを誤ってしまった場合に半定期的に行います。

hub gem は、プルリクエストのコンポーネントの操作に役立つことがあります。

そのgemは、次のような手動プロセスをまとめています。

  1. リモートの追加 ローカルチェックアウトへの分岐用。
  2. そのリモートを取得します。
  3. git checkout ${target_branch} && git merge ${remote}/${branch}
  4. git Push Origin ...
52
Daniel Pittman

他の回答で言及されているハブ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/*

これは、プルリクエストをダウンロードできるようにすることです[〜#〜] all [〜#〜]。それは巨大なリポジトリでは望ましくない可能性があるため、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」をブランチにマージします

必ずそのメッセージを編集し、プルリクエスト番号への参照を含めてください。つまり:(プルリクエスト番号が123であると仮定)

リモート追跡ブランチ「user/their-branch」をブランチにマージします

refs#123何でも解決...

そのため、次回githubのissue/pull-requestsページにアクセスして、その特定のプルリクエストを確認すると、マージした場所をコミットするためのリンクを含むメッセージが表示されます。

ここに私が意味するもののスクリーンショットがあります。

enter image description here

8

既存のものではないため、既存のプルリクエストを変更することはできませんが、関連するソースリポジトリがまだ存在する場合は簡単に新しいものを作成できます。

サブミッターのリポジトリに移動し、同じコミットを使用してリポジトリに新しいプルリクエストを作成しますが、正しいターゲットブランチを正しく設定していることを確認してください。

次に、独自のリポジトリに戻り、新しいプルリクエストを受け入れます。出来上がり!

8
Carsten Schmitz

これを行うには、リポジトリのホームページに移動し、ブランチをクリックして、デフォルトのブランチをマスターから他の何か、この場合は「dev」に変更します。

その後、誰かがプルリクエストを作成するたびに、mergeボタンはマスターではなく「dev」にリクエストを自動的にマージします。

enter image description here

6
abbood