Gitマージの前に磨きますか?


4

ユーザーブランチをmasterにマージしたいのですが、コードレビューを実行してください。マージコミット前の変更

例えば:

o---o---o---o---o master
    \
     o---o---o lucy

一般に git merge lucy 結果は次のようになります。

                    ,-- "Merge commit"
                    |
o---o---o---o---o---o master
    \              /
     o---o---o----' lucy

コードレビュー後修正する:

                    ,-- "Merge commit"
                    |   ,-- "Code review: 1) fixed EOL char, 2) apply tabsize=4, ..."
                    |   |
o---o---o---o---o---o---o master
    \              /
     o---o---o----' lucy

上記の代わりに、マージコミットとコードレビューコミットを単一のコミットとして作成します。

                    ,-- "Code review & merge: 1) fixed EOL char, 2) apply tabsize=4, ..."
                    |
o---o---o---o---o---o master
    \              /
     o---o---o----' lucy

私はもう試した git merge --no-commitしかし、その後はマージコミットとしてコミットすることはできません。

何か案が?


git-rebase おそらくあなたが望むものです。
Hello71

私はそうは思いません、私は言うのを忘れました:私はユーザーのブランチをコントロールすることができません。私はそれらを取得して私のマスターにマージするだけです。
Xiè Jìléi

回答:


2

次のワークフローを試してください。リベースをマージする代わりに、ルーシーが行われた後。 git checkout lucy; git rebase master。それ以降は、最後のルーシーコミットは、ルーシーからマスターへのマージと同じになります。

o---o---o---o---o master
                 \
                  o---o---o lucy'

コードレビュー担当者にlucyのレビューを依頼してください。 lucyで必要に応じて変更をコミットし(下記の* commit)、それから簡単な(例えば--no-ffを使用しないのであれば早送りなど)マスターのlucyからマージを実行します。

o---o---o---o---o---------------o master
                 \             /
                  o---o---o---* lucy'

他の唯一の選択肢は、マスターにマージを行い、マスターを共有/プッシュしないことです。コードレビューをマスターに依頼してから、lucyマージをリセットし、コードレビュー修正をlucyにリベースしてから再マージします。非常に誤りと衝突が起こりがちです。

後であなたのコメントを読みましたが、あなたはユーザーのブランチをコントロールすることはできません。あなたの唯一の選択肢は、「非常に誤りがあり、衝突が起こりやすい」という最後の段落です。


1

私はあなたの生徒のブランチをコントロールすることはできません。マージを実行するためにあなた自身の新しいブランチを作成してください。

o---o---o---o---o---o master
   \                 \
    |                  * lucy_merge
    \              
     o---o---o----o lucy

マージとその後の調整を行います。

o---o---o---o---o---o master
   \                 \
    |                 o---o---* lucy_merge
    \                /
     o----o----o----o lucy

その後、他のコミットがあった場合、またはクリーンアップが必要な場合は、masterをマージすることができます。

o---o---o---o---o---o---?---?---* master
   \                 \         /
    |                 o---o---o lucy_merge
    \                /
     o----o----o----o lucy

あるいは、masterに変更がなくクリーンアップが不要な場合は、単にmasterヘッドを移動してmergeブランチを削除します。

o---o---o---o---o---o
   \                 \         
    |                 o---* master
    \                /
     o----o----o----o lucy

0

通常のマージをしてから、前回のコミットを修正してください。 git commit --amend レビューをコミットするとき

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.