到目前为止,我知道有一种很好的方法可以使用“git rebase --interactive”来组合提交并更改提交消息
出现以下情况:
$ git rebase --interactive HEAD^^^^
pick 5b7c140 commitA
pick 40ffd7c commitB
pick 5e7647d commitC
pick 78bea2d commitD
Rebase [...]
是否还可以满足以下要求:
将 commitA 和 commitS 以及 commitS 和 commitS 组合到新的提交 cAC 和 cBD 中?
这是可能的 - 您还可以使用交互式变基重新排列提交的顺序:
pick 5b7c140 commitA
squash 5e7647d commitC
pick 40ffd7c commitB
squash 78bea2d commitD
or
pick 5b7c140 commitA
fixup 5e7647d commitC
pick 40ffd7c commitB
fixup 78bea2d commitD
两者的区别在于squash
允许您编辑新提交的提交消息,而fixup
只是丢弃第二个提交消息,留下前面的消息pick
组合提交的提交消息。 (如果你的编辑器启动得足够快,那么就养成只选择squash
为您提供了一个很好的机会来查看提交消息,即使您认为可能不需要使用提交消息的部分内容fixup
犯罪。)
对提交重新排序可能会在变基期间带来冲突的可能性;在这个例子中,如果commitB
and commitC
更改了文件的同一部分。考虑到这一点,我经常分两步进行这种变基,首先重新排序提交以处理冲突(在示例中)pick
A
, C
, B
, D
)然后进行提交组合(squash
, fixup
)。我发现这样冲突管理变得更容易,特别是如果我在做这件事的过程中被打断的话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)