将来自另一个分支的所有更改合并为一次提交

在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

下一篇: How to set mousemove update speed?