git:merge branch并使用有意义的合并提交消息?

时间:2013-02-21 15:52:32

标签: git version-control branching-and-merging

将功能分支合并回主分支后,我通常需要默认进行合并提交。但我想在此提交中使用来自我的功能分支的原始提交消息,而不是“merge branch XXX”。

我该怎么做?

5 个答案:

答案 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

您只需添加squashs代替pick

pick 73c991e Create progress bar module
pick b8a0b83 merge branch feature
s 2120f47 Add user form
pick 70c55e4 Quiz prototype system

此命令会将b8a0b832120f47压缩在一起。下一步将是一个提交文本编辑器,您可以将提交消息组合在一起,现在由您自己编辑它们以保留原始消息。

答案 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

您可能必须解决冲突。

此方法避免了自动提交,因此所有文件都保留在索引上;因此,您可以使用在第一步中保存的原始提交消息提交代码。

我知道它在作弊,但它确实有效。 =)