Con*_*ion 22 git git-pull git-merge git-rebase
我犯了一个错误:我应该使用git pull --rebase
,但我发布了一个简单的git pull
,合并的所有内容,现在在我的分支的HEAD中有一个合并提交.
我想摆脱那个合并提交,我想我只是发出一个git rebase -i HEAD~3
,将我的最后一个本地提交移到顶部并将合并提交压缩到它中.唉,合并提交不适用于压缩.如果我这样做,我进入中间状态,我需要再次进行合并,这是很多工作.
有没有办法解决这个问题而不必再次执行合并?似乎应该可以以某种方式使用合并提交?
Enr*_*lio 25
即使您可以在rebase中包含合并提交,也不能压缩合并提交.Git会告诉你:
拒绝压缩合并:<SHA-1>
为了保持合并期间所做的更改,您可以做的是将合并提交转换为正常提交.此时你可以像任何其他提交一样压缩它.
假设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
Run Code Online (Sandbox Code Playgroud)
通常,您可以在使用rebase时保留合并提交git rebase -p
.
但是,它的目的是重放导致合并的提交.作为合并提交的一部分的任何更改(例如,冲突解决方案)都不会保留.
这是来自文档:
-p
--preserve-merges
通过重放合并提交引入的提交来重新创建合并提交,而不是展平历史记录.不保留合并冲突解决方案或手动修改合并提交.
这在--interactive
内部使用机器,但--interactive
明确地将它与选项结合使用通常不是一个好主意,除非你知道你在做什么(见下面的BUGS)
文档引用的错误是通过重新排序提交触发的.
归档时间: |
|
查看次数: |
6819 次 |
最近记录: |