当我将一个特性分支合并回主分支时,通常默认需要进行一次合并提交。但是我想在这个提交中使用我的特性分支中的原始提交消息,而不是“合并分支XXX”。
我应该怎么做呢?
当我将一个特性分支合并回主分支时,通常默认需要进行一次合并提交。但是我想在这个提交中使用我的特性分支中的原始提交消息,而不是“合并分支XXX”。
我应该怎么做呢?
只需将-m
和--no-ff
参数传递给merge
命令:
$ git merge other-branch -m "Commit Message" --no-ff
需要使用--no-ff
参数,以防止快进合并而不产生合并提交。
git checkout feature
git rebase main
# Resolve conflict if there is
git checkout main
git merge feature
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 rebase -i
编辑提交消息。不要使用 squash
,只需使用 edit
。我不是 Git 中保留历史记录的忠实支持者,对我来说,Git 是一个编辑器,用于编写项目历史记录,使其有意义且易于使用(例如 bisect)。因此,我广泛使用 rebase 来保持我的历史记录整洁和有用;这可能不是您的观点,但我相信最终您会接受它。 - Simon Boudriasgit merge
命令:$ git checkout mainBranch
$ git merge featureBranch --squash --no-commit
您可能需要解决冲突。
这种方法避免了自动提交,所有文件都留在索引中;因此,您可以使用任何想要的提交消息提交代码。
在执行合并提交之后,我发现可以添加一次修订提交“git ci --amend”来更改提交消息,这正好满足了我的要求。我将接受自己的答案作为正确的答案。
Simon Boudrias和ranendra给出了相关的答案,在不同的方式上也是有效的。所以我投了赞成票。
$ git pull(in master which retrieves the new changes>
$ git checkout <local_branch>
$ git rebase master
$ git checkout master
$ git merge local_branch.
--no-ff
命令。没有它,就不会有合并提交信息。所以这样做:git merge --no-ff other-branch -m "提交信息"
- TinaTT2