如何使用git merge
我有一个远程Git服务器,这是我想要执行的场景:
对于每个错误/功能,我创建了一个不同的Git分支
我继续在Git分支中使用非官方的Git消息提交我的代码
在最上面的版本库中,我们必须为官方Git消息中的一个bug做一次提交
那么我怎样才能将我的分支合并到远程分支中,这样他们只需要为我的所有签入提交一个提交(我甚至想为此提供提交消息)?
说你的bug修复分支叫做bugfix
并且你想把它合并到master
:
git checkout master
git merge --squash bugfix
git commit
这将从bugfix
分支中提取所有提交,将它们bugfix
到1次提交中,并将其与master
分支合并。
说明 :
git checkout master
切换到您的master
分支。
git merge --squash bugfix
从bugfix
分支中提交所有提交并将其与当前分支合并。
git commit
从合并的更改中创建单个提交。
省略-m
参数可让您在完成提交之前修改草稿提交消息,其中包含来自压缩提交的每条消息。
您想要与压扁选项合并。 那就是如果你想一次只做一个分支。
git merge --squash feature1
如果你想在同一时间合并所有分支作为单个提交,那么首先交互化并压缩每个特征然后合并八爪鱼:
git checkout feature1
git rebase -i master
压缩成一个提交然后重复其他功能。
git checkout master
git merge feature1 feature2 feature3 ...
最后一次合并是一个“章鱼合并”,因为它合并了很多分支。
希望这可以帮助
终于为我解决这个问题的评论显示:
git checkout main
git merge --squash feature
相当于做:
git checkout feature
git diff main > feature.patch
git checkout main
patch -p1 < feature.patch
git add .
当我想合并功能分支与105(!!)提交并将它们全部压缩到一个时,我不想git rebase -i origin/master
因为我需要分别解决每个中间提交的合并冲突(或者至少是git自己弄不清楚的)。 使用git merge --squash
可以让我得到我想要的结果,即合并整个功能分支的单个提交。 而且,我最多只需要执行一次手动冲突解决方案。
上一篇: How to use git merge
下一篇: How can I know in git if a branch has been already merged into master?