2016-10-12 13 views
4

私は機能ブランチtestを持っています。私は自分の変更を加え、変更をその支店にコミットしました。私のmasterのヒントが変更されました(他の開発者からより多くのコミットがあったとします)。プルリクエスト後のリベース

リモートブランチに変更をプッシュする前に、git rebaseを実行してから変更をプッシュしてプルリクエストを作成しました。

私の要求に応じて、私はそれらを修正するために必要ないくつかのコメントがありました。

修正後、masterブランチが更新されたことがわかりました。 (他の開発者からのコミットがもう少しあると仮定します)。

任意の時点で、mastertestへのブランチをマージする理由はということです:そこのマスターの変更を統合する必要があるシナリオもこの状況では、この機能ブランチ

でアプリケーションをテストするかもしれませんが、私が持っています2つの質問。

  1. は、どのように私は、マージが私testブランチにコミットすることなく、私のtest支店へmasterの新しい変更をリベース/マージすることができますか?このようにして、プルリクエストの一部である以前のコミットと、プルリクエストコメント修正である新しいコミットの両方を取得します。

  2. mastertestにマージして既存の以前のコミットに新しいコミットを追加すると、私はいつも自分のPRにコミットすることができますか?

+1

マージの代わりに特定の理由でリベースを使用していますか?なぜ 'test'をチェックアウトし、' git merge master'を実行するのですか? –

+0

他のマージコミットを避けるためのベース – Rams

+0

代わりに、それが唯一の理由なら、代わりに 'merge --ff'を使うことを検討してください。 –

答えて

3

まず、masterの新しい変更が機能ブランチに統合される必要があるかどうかを判断します。 masterから新しい変更を無視することができます。 testの変更と矛盾しない場合は、これが最も簡単なことです。メンテナがあなたのPRをマージできるようになります。

GitHubのPRページで確認できます。 「自動マージできません」というメッセージが表示された場合は、次のいずれかの解決方法を使用する必要があります。


マージすることなく、上流の変更を含めるための標準的な方法は、ちょうど再びリベースすることです:

git checkout test 
git rebase master 

これは歴史を書き換えているので、あなたが強制的にプッシュする必要があります。

git push --force-with-lease 

あなたPRはすべてのコミットで更新され、その履歴には新しいコミットがmasterに追加されます。

義務警告:リベースによって履歴が書き換えられるため、このブランチで作業しているすべての人にとって危険であり混乱している可能性があります。コラボレーションしている相手と行ったことを明確に伝えてください。

あなたがリベースしたくない場合は、あなたの他のオプションは次のとおりです。

  • testmasterをマージしますが、あなたがこれを行うにはしたくない述べてきました。
  • git cherry-pickmasterに新しいコミットがあります。これにはブランチ上のコミットを複製することの欠点があります。
  • masterのスカッシュマージをtestgit merge --squash masterに行います。これはcherry-pickと似ていますが、コミットは1つだけ作成されます。
+0

ありがとう@Scott解決方法を試してみましょう。 – Rams

+0

rebaseまたはmergeする理由は、 'PRがマージできる 'とgitが言っているからではありません。マスターの変更を統合し、この機能ブランチでアプリケーションをテストする必要があるシナリオがあります。 – Rams

+0

@Ramsああ、大丈夫。それは正当な理由です。おそらくあなたの質問に言及するためにあなたの質問を編集する必要があります(// stackoverflow.com/help/editing)。 –

関連する問題