git:合并分支并使用有意义的合并提交消息?

hgqdbh6s  于 2023-05-15  发布在  Git
关注(0)|答案(5)|浏览(154)

在我将一个特性分支合并回主分支之后,我通常需要默认地进行一次合并提交。但是我想在这次提交中使用来自我的特性分支的原始提交消息,而不是“合并分支XXX”。
我该怎么做?

rt4zxlrg

rt4zxlrg1#

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

$ git merge other-branch -m "Commit Message" --no-ff

需要--no-ff参数来防止合并为没有合并提交的快进。

xzlaal3s

xzlaal3s2#

你基本上有两个选择。

简单的解决方案:不合并,重新定基

在主分支之上重定分支的基,解决冲突,然后合并。因为你有一个直接的历史记录,你可以快进到合并,这不会创建任何 * 合并提交 *。

git checkout feature
git rebase main
# Resolve conflict if there is
git checkout main
git merge feature

第二个选项:Rebase -i

您可以在合并后编辑历史记录(推送到远程之前)。您可以使用变基交互模式来管理此操作。

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压缩在一起。下一步将是一个提交文本编辑器,在这里你已经把两条提交消息合并在一起了,现在由你来正确地编辑它们,只保留你的原始消息。

ssm49v7z

ssm49v7z3#

如果提交已经完成,你只需要amend提交。
如果在提交之前,请使用git merge,如下面的示例所示:

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

您可能需要解决冲突。
该方法避免了自动提交,所有文件都留在索引上;因此,您可以使用所需的任何提交消息提交代码。

zpqajqem

zpqajqem4#

当master和local分支中有不同的变更集时,git 会自动为 merge 创建一个额外的提交。为了阻止这种额外的提交发生,你可以在分支中 rebase 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.
wko9yo5t

wko9yo5t5#

我在做合并提交后发现了这个问题。我可以添加一个修正提交“git ci --amend”来更改提交消息,这完全符合我的要求。我会接受我自己的答案作为正确答案。
Simon Boudrias和Ranendra给出了相关的答案,这些答案也以不同的方式有效。所以我选了他们。

相关问题