我犯了一个错误:我应该使用git pull --rebase
,但我发布了一个简单的git pull
,合并了所有内容,现在在我的分支的头部有一个合并提交。
我想摆脱那个合并提交,我想我只需发出一个git rebase -i HEAD~3
,将我的最后一个本地提交移动到顶部并将合并提交压缩到其中。唉,合并提交不可用于压缩。如果我这样做,我会进入中间状态,需要再次进行合并,这是一个lot工作的。
有没有办法解决这个问题而不必再次执行合并?似乎应该可以以某种方式使用合并提交?
tl;dr
即使您可以在变基中包含合并提交,您也无法压缩合并提交。 Git 会告诉你:
拒绝压缩合并:
你什么can为了保留合并期间所做的更改,要做的是将合并提交转换为普通提交。那时你可以像任何其他提交一样压缩它。
假设HEAD
指向合并提交:
git reset --soft HEAD~1 # Keeps changes in the index
git commit # Create a new commit, this time not a merge commit
git rebase -i HEAD~4 # Do an interactive rebase and squash the new commit
在变基期间保留合并提交
一般来说,您可以在执行变基操作时保留合并提交git rebase -p
.
然而,其目的是重播导致合并的提交。合并提交本身的任何更改(例如冲突解决方案)都不会保留。
这是来自文档 https://www.kernel.org/pub/software/scm/git/docs/git-rebase.html:
-p
--保留合并
重新创建合并提交,而不是通过重播合并提交引入的提交来展平历史记录。合并冲突
不会保留对合并提交的决议或手动修改。
这使用了--interactive
内部有机械,但将其组合起来
与--interactive
显式选项通常不是一个好主意
除非你知道自己在做什么(参见下面的错误)
The bug https://www.kernel.org/pub/software/scm/git/docs/git-rebase.html#_bugs文档所指的是通过重新排序提交触发的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)