在我将功能分支合并回主分支后,我通常需要默认进行合并提交。但我想在此提交中使用来自我的功能分支的原始提交消息,而不是“合并分支 XXX”。
我该怎么做?
在我将功能分支合并回主分支后,我通常需要默认进行合并提交。但我想在此提交中使用来自我的功能分支的原始提交消息,而不是“合并分支 XXX”。
我该怎么做?
只需将-m
参数传递给merge
命令:
$ git merge other-branch -m "Commit Message"
你基本上有两个选择。
简单的解决方案:不要合并,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
您只需要添加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
. 下一步将是一个提交文本编辑器,您可以在其中合并两个提交消息,现在由您来正确编辑它们以仅保留原始消息。
如果提交已经完成,您只需修改提交。
如果在提交之前,请在下面的示例中使用git merge
like:
$ git checkout mainBranch
$ git merge featureBranch --squash --no-commit
您可能需要解决冲突。
这种方法避免了自动提交,所有文件都留在索引上;因此,您可以使用任何您想要的提交消息来提交代码。
我发现在合并提交之后。我可以添加一个修正提交“git ci --amend”来更改提交消息,这正是我所要求的。我会接受我自己的答案作为正确答案。
Simon Boudrias 和 ranendra 给出了相关的答案,这些答案也以不同的方式有效。所以我投票给他们。
当 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.