在功能分支上完成了大量工作,在此期间,分支上有多个提交,但是也会将提交与主分支的更改合并。
现在功能分支的提交方式如下:
现在在GitHub仓库上创建了拉取请求,但很难完成所有更改并批准它。
我想要的是压缩功能分支上的提交,这样我只需要提交一个很好的提交。
我该怎么做?
我已经阅读过关于压制变化和变基的文章,但我需要一些帮助。
我可以致电rebase -i [commitnumber]
,其中提交号为Work 1
吗?
我在功能分支上使用了它,它工作得很好,但是当存在合并提交时却没有。
答案 0 :(得分:3)
git merge --squash
这是最简单的方法。转到main
分支,使用feature
选项合并--squash
分支。
git checkout main
git merge --squash feature
git rebase -i
这就是你的建议。 在重新定位之前确保您拥有功能分支的备份副本。
在您的功能分支上调用git branch
:
git checkout feature
git branch feature_backup
现在检查日志,查看已启动功能开发的提交的SHA哈希值。如果这是很久以前的事了,您可以使用此命令查看从feature
分支分割的main
分支的位置:
git merge-base main feature
然后使用git rebase:
git rebase bc4b30e
继续like it is described here。您不应该提供您想要压缩的提交数量,而是要提供您要压缩的第一个提交的SHA哈希值。如果那是n提交之前,你可以使用HEAD~n
。