33

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

我该怎么做?

4

5 回答 5

81

只需将-m参数传递给merge命令:

$ git merge other-branch -m "Commit Message"
于 2015-10-15T16:36:49.817 回答
16

你基本上有两个选择。

简单的解决方案:不要合并,Rebase
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

该命令将挤压在一起b8a0b83并且2120f47. 下一步将是一个提交文本编辑器,您可以在其中合并两个提交消息,现在由您来正确编辑它们以仅保留原始消息。

于 2013-02-21T16:05:56.030 回答
7

如果提交已经完成,您只需修改提交。

如果在提交之前,请在下面的示例中使用git mergelike:

$ git checkout mainBranch
$ git merge featureBranch --squash --no-commit

您可能需要解决冲突。

这种方法避免了自动提交,所有文件都留在索引上;因此,您可以使用任何您想要的提交消息来提交代码。

于 2016-07-29T08:32:25.360 回答
4

我发现在合并提交之后。我可以添加一个修正提交“git ci --amend”来更改提交消息,这正是我所要求的。我会接受我自己的答案作为正确答案。

Simon Boudrias 和 ranendra 给出了相关的答案,这些答案也以不同的方式有效。所以我投票给他们。

于 2013-02-22T18:31:14.763 回答
4

当 master 和本地分支中有不同的变更集时,git会自动为合并创建一个额外的提交。要阻止此类额外提交的发生,您可以在将分支合并到 master 之前重新调整分支中的 master

$ git pull(in master which retrieves the new changes>
$ git checkout <local_branch>
$ git rebase master 
$ git checkout master
$ git merge local_branch.
于 2013-02-21T16:07:26.673 回答