在我将一个特性分支合并回主分支之后,我通常需要默认地进行一次合并提交。但是我想在这次提交中使用来自我的特性分支的原始提交消息,而不是“合并分支XXX”。我该怎么做?
rt4zxlrg1#
只需将-m和--no-ff参数传递给merge命令:
-m
--no-ff
merge
$ git merge other-branch -m "Commit Message" --no-ff
需要--no-ff参数来防止合并为没有合并提交的快进。
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
您只需要添加squash或s而不是pick:
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压缩在一起。下一步将是一个提交文本编辑器,在这里你已经把两条提交消息合并在一起了,现在由你来正确地编辑它们,只保留你的原始消息。
b8a0b83
2120f47
ssm49v7z3#
如果提交已经完成,你只需要amend提交。如果在提交之前,请使用git merge,如下面的示例所示:
git merge
$ git checkout mainBranch $ git merge featureBranch --squash --no-commit
您可能需要解决冲突。该方法避免了自动提交,所有文件都留在索引上;因此,您可以使用所需的任何提交消息提交代码。
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.
wko9yo5t5#
我在做合并提交后发现了这个问题。我可以添加一个修正提交“git ci --amend”来更改提交消息,这完全符合我的要求。我会接受我自己的答案作为正确答案。Simon Boudrias和Ranendra给出了相关的答案,这些答案也以不同的方式有效。所以我选了他们。
5条答案
按热度按时间rt4zxlrg1#
只需将
-m
和--no-ff
参数传递给merge
命令:需要
--no-ff
参数来防止合并为没有合并提交的快进。xzlaal3s2#
你基本上有两个选择。
简单的解决方案:不合并,重新定基
在主分支之上重定分支的基,解决冲突,然后合并。因为你有一个直接的历史记录,你可以快进到合并,这不会创建任何 * 合并提交 *。
第二个选项:Rebase -i
您可以在合并后编辑历史记录(在推送到远程之前)。您可以使用变基交互模式来管理此操作。
然后你将进入一个交互式shell,其中包含提交列表,例如:
您只需要添加
squash
或s
而不是pick
:这个命令会将
b8a0b83
和2120f47
压缩在一起。下一步将是一个提交文本编辑器,在这里你已经把两条提交消息合并在一起了,现在由你来正确地编辑它们,只保留你的原始消息。ssm49v7z3#
如果提交已经完成,你只需要amend提交。
如果在提交之前,请使用
git merge
,如下面的示例所示:您可能需要解决冲突。
该方法避免了自动提交,所有文件都留在索引上;因此,您可以使用所需的任何提交消息提交代码。
zpqajqem4#
当master和local分支中有不同的变更集时,git 会自动为 merge 创建一个额外的提交。为了阻止这种额外的提交发生,你可以在分支中 rebase master,然后将其合并到master。
wko9yo5t5#
我在做合并提交后发现了这个问题。我可以添加一个修正提交“git ci --amend”来更改提交消息,这完全符合我的要求。我会接受我自己的答案作为正确答案。
Simon Boudrias和Ranendra给出了相关的答案,这些答案也以不同的方式有效。所以我选了他们。