当我在一个团队中工作并且必须将我的本地分支推到远程主分支时,我首先用这个简单的命令将我的本地分支重基到master:
git fetch && git rebase origin/main
但是当我这样做时,所有的本地提交都被应用,并且发生冲突,因为这些以前提交的代码与我的最后一个本地状态不同(保存在我的最后一个提交中)。而解决我自己提交的冲突需要很多(无用的)时间...
我害怕做一个错误的处理,所以我在这里寻找一些帮助。我的问题是:
在变基之前,我如何将所有的本地提交合并为一个?谢谢,当我变基时,只有一个提交要应用
我不知道这是否是更好的方法,请随时给予我的建议。:)谢谢!
2条答案
按热度按时间vaj7vani1#
测试
我将此方法与在特性分支上运行
git rebase <upstream>
进行了比较,从这两种方法中获得了相同的树ID。根据默认的提交消息,squash也压缩了我期望的范围(它相当冗长)。
提交消息注意事项
git merge --squash
的默认提交消息远不如您通过squash
从git rebase --interactive
获得的提交消息好。其他:重新应用冲突
如果你只是厌倦了在使用git-rebase(1)时一遍又一遍地修复相同的合并冲突,那么你可能想看看git-rerere(1)。
5lwkijsr2#
您可以通过以下方式轻松做到这一点:
git rebase -i HEAD~n
(其中n是在main之上的提交数)1.编辑器将打开,您必须将
pick
保留在顶部提交中,然后将以下行中的pick
替换为s
,这代表squash。1.在下一个编辑器中,按您的意愿编辑提交消息
1.您将看到一条消息,表示“成功重新定基...”
1.然后运行
git pull --rebase origin main
将该提交放在远程分支上的提交之上