在实际合并之前查看git-merge的结果

Smo*_*kie 13 git

有没有办法在实际合并它们之前检查两个分支之间的合并结果?

当尝试将分支A合并到分支B时,我通常从B检出一个临时分支,将其与分支A合并,然后我创建一个差异补丁,或者只是检查到该临时分支并在合并之前检查一切是否正常工作A到B.

git是否提供了可以实现此目的的命令或功能?

Kla*_*urn 20

正如Marian Theisen建议的那样,你可以这样做而不需要提交合并

git merge --no-commit <branchname>
Run Code Online (Sandbox Code Playgroud)

您可以退出该合并

git reset --hard
Run Code Online (Sandbox Code Playgroud)

另外,请记住,在Git中备份总是很容易.您可以进行完全合并,包括提交,检查完整的结果,如果您改变主意,则可以

git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)

抛弃合并并在合并之前返回提交.

事实上,在合并解决期间的任何时候,你都可以做到

git reset --merge
Run Code Online (Sandbox Code Playgroud)

要中止合并并抛弃合并更改.


Sto*_*ica 18

我称之为"代码审查工作流程",并且一直这样做.

git merge --no-commit --no-ff branchname
Run Code Online (Sandbox Code Playgroud)

没有--no-ff旗帜,如果Git可以做快进,那么它就会这样做.(正如预期的那样,就像快进的情况一样,没有合并提交来创建.)

.gitconfig为方便起见,我有这个别名设置:

rev = merge --no-ff --no-commit
Run Code Online (Sandbox Code Playgroud)

这样我就可以做到:

git rev branchname
Run Code Online (Sandbox Code Playgroud)

我们的想法是,所有功能都是在不同的分支中开发的,每个功能都由作者以外的人审查和合并.正如其他答案指出的那样,您可以通过以下方式中止合并:

git reset --merge
Run Code Online (Sandbox Code Playgroud)

并要求作者做出更多改变.

要仅使用合并提交查看日志,我使用另一个别名:

revlog = log --first-parent
Run Code Online (Sandbox Code Playgroud)

这样,日志就成为大步骤的时间轴:按功能逐行而不是按提交提交.


Rya*_*art 5

为什么要这么麻烦呢?只需进行合并,测试它,如果您不喜欢它,则git reset --hard HEAD^返回到合并前状态。无论您是否决定保留合并,进行一些临时或中途合并只会增加您的工作量。