在 git merge 之前先进行润色?

在 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,但是,此后我无法将其作为合并提交进行提交。

任何想法?

答案1

尝试以下工作流程。lucy 完成后,不要合并 rebase。。 git checkout lucy; git rebase master此后,最后的 lucy 提交将与从​​ lucy 合并到 master 的提交相同。

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

要求您的代码审阅者审阅 lucy。在 lucy 上提交必要的更改(下面的 * 提交),然后执行从 master 上的 lucy 进行的简单合并(例如,可能快进,除非您使用 --no-ff,我推荐这样做)。

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

唯一的其他选择是合并到主服务器上,而不是共享/推送主服务器。对主服务器进行代码审查,然后重置 lucy 合并并将代码审查修复重新定位到 lucy 上,然后重新合并。非常容易出错和发生冲突。

后来我读到你的评论,说你无法控制用户的分支。你唯一的选择就是上一段以“非常容易出错和冲突”结尾的段落。

答案2

如果你无法控制你学生的分支,请创建你自己的新分支来进行合并:

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

答案3

只需进行正常合并,然后git commit --amend在提交审查提交时使用修改前一次提交。

相关内容