将功能分支合并回主分支后,我通常需要默认进行合并提交。但我想在此提交中使用来自我的功能分支的原始提交消息,而不是“merge branch XXX”。
我该怎么做?
答案 0 :(得分:14)
只需将-m
参数传递给merge
命令:
$ git merge other-branch -m "Commit Message"
答案 1 :(得分:9)
你基本上有两个选择。
简易解决方案:不合并,Rebase
将您的分支重新定位在主分支之上,解决冲突,然后合并。由于您将拥有直接的历史记录,因此您将能够快进合并,这将不会创建任何合并提交。
git checkout feature
git rebase main
# Resolve conflict if there is
git checkout main
git merge feature
第二个选项:Rebase -i
您可以在合并后编辑历史记录( 之前推送到遥控器)。您可以使用rebase交互模式进行管理。
git checkout main
git merge feature
#You merge and resolve conflict
git rebase -i <sha of the commit before the merge>
然后,您将被带入具有提交列表的交互式shell,例如:
pick 73c991e Create progress bar module
pick b8a0b83 merge branch feature
pick 2120f47 Add user form
pick 70c55e4 Quiz prototype system
您只需添加squash
或s
代替pick
:
pick 73c991e Create progress bar module
pick b8a0b83 merge branch feature
s 2120f47 Add user form
pick 70c55e4 Quiz prototype system
此命令会将b8a0b83
和2120f47
压缩在一起。下一步将是一个提交文本编辑器,您可以将提交消息组合在一起,现在由您自己编辑它们以保留原始消息。
答案 2 :(得分:3)
如果在master和本地分支中有不同的更改集, git 会自动为 merge 创建额外的提交。要阻止此类额外提交的发生,您可以在将其合并到主服务器之前重新分支中的主服务器。
$ git pull(in master which retrieves the new changes>
$ git checkout <local_branch>
$ git rebase master
$ git checkout master
$ git merge local_branch.
答案 3 :(得分:2)
我发现合并提交后。 我可以添加修订提交“git ci --amend”来更改提交消息, 这完全符合我的要求。我会接受我自己的答案作为正确答案。
Simon Boudrias和ranendra给出了相关答案,这些答案在不同方面也有效。所以我投票了。
答案 4 :(得分:0)
首先,复制您要保留的原始提交邮件。
然后,使用下面示例中的$ git checkout mainBranch
$ git merge featureBranch --squash --no-commit
:
Series
您可能必须解决冲突。
此方法避免了自动提交,因此所有文件都保留在索引上;因此,您可以使用在第一步中保存的原始提交消息提交代码。
我知道它在作弊,但它确实有效。 =)