web-dev-qa-db-ja.com

git mergeの前にポーランド?

ユーザーブランチをマスターにマージしたいのですが、マージコミットの前にいくつかのコードレビューと変更を行います。

例えば:

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の後、後でマージコミットとしてコミットすることはできません。

何か案が?

4
Xiè Jìléi

次のワークフローを試してください。リーケーゼをマージするのではなく、ルーシーが行われた後。 git checkout lucy; git rebase master。その後、最後のLucy Commitは、LucyからMasterへのマージがあるものと同じです。

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

ルーシーを確認するようにコードレビュー担当者に依頼してください。 COMMITは、必要に応じて必要に応じて変更(下記の*コミット)を実行し、次に些細なことを実行します(例えば、推奨する - NO-FFを使用しない限り、早送り)、マスターのLucyからマージします。

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

他の唯一の選択肢はマスターにマージを実行することであり、マスターを共有/プッシュしないでください。あなたのマスターでコードレビューしてから、Lucy Mergeをリセットして、コードレビュー修正をLucyに再度再生してから再実行してください。非常に誤りと矛盾が発生しやすい。

私は後であなたがユーザーのブランチを制御できないというあなたのコメントを読んでください。唯一のオプションは、「非常にエラーと競合が起こりやすい」を終了する前の段落です。

2
Seth Robertson

私はあなたの学生の支部を制御することができません、マージをするためにあなたの新しいブランチを作成します:

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
 _

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

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

またはマスターヘッドを動かしてマスターに変更がなかった場合はマージブランチをドロップし、クリーンアップが必要でした。

o---o---o---o---o---o
   \                 \         
    |                 o---* master
    \                /
     o----o----o----o lucy
 _
1
Mat

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

0
Mario Carneiro