将来自另一个分支的所有更改合并为一次提交
在Git中,是否有办法将所有更改从一个分支合并到另一个分支,但同时挤压为单个提交?
我经常在一个单独的分支中开发新功能,并定期提交/推送 - 主要用于备份或将我正在工作的内容传输到另一台计算机。 主要是那些提交说“特征xxx WIP”或其他冗余。
一旦这个工作完成了,我想把WIP分支合并回主,我想放弃所有那些中间提交,并且只需要一个简单的提交。
是否有捷径可寻?
另外,如果一个命令会压扁分支上的所有提交,因为它是分支点?
另一个选项是git merge --squash <feature branch>
然后最后做一个git commit
。
从Git合并
--squash
--no-squash
产生工作树和索引状态,就好像真的合并发生了(合并信息除外),但实际上并没有提交或移动HEAD
,也没有记录$GIT_DIR/MERGE_HEAD
以使下一个git commit
命令创建合并承诺。 这允许您在当前分支上创建一个单独的提交,其效果与合并另一个分支相同(或者在章鱼的情况下更多)。
找到了! 合并命令有一个--squash
选项
git checkout master
git merge --squash WIP
在这一点上,一切都合并,可能是冲突的,但没有承诺。 所以我现在可以:
git add .
git commit -m "Merged WIP"
尝试你的功能分支上的git rebase -i master
。 然后,您可以将除“一个”之外的所有内容都更改为“压扁”以合并提交。 参见压缩承诺与rebase
最后,你可以从主分支进行合并。
链接地址: http://www.djcxy.com/p/40579.html上一篇: Merge all changes from another branch as a single commit