如何避免在提交消息中"合并分支'name_of_branch'?

San*_*ing 33 git

我记得大约一年前我做了一些合并,导致提交消息Merge branch 'Name_of_branch'在远程存储库上.

根据我的记忆,如果我重新定位分支中的所有提交然后将其合并到master然后推送到远程存储库,就会发生这种情况.

但现在我无法用git-1.7.2.2重现它.

它被修复了吗?或者有人可以解释这是如何发生的,也许是如何避免它?

Cas*_*bel 35

这是默认的合并提交消息.获得它并不需要任何特殊的东西 - 只需将任何重要的合并到master中:

- o - o - X (master)
   \     /
    o - o (topic)
Run Code Online (Sandbox Code Playgroud)

提交X的默认提交消息将是"合并分支'主题'".如果合并到master之外的分支,则默认消息为"Merge branch '<merged-branch>' into '<branch>'".

我不确定你为什么要问"修理"和"避免"这个.这是合并提交的一个非常合理的默认消息.如果您想要更详细的合并提交消息,我们当然欢迎您提供一个.(两种主要方式是使用git merge --no-commit后跟git commitgit merge后跟git commit --amend编辑消息.)

也许你习惯只做快进合并?(那些是简单的合并,你正在合并的提交将你当前的分支作为祖先,所以git所要做的就是将分支向前移动历史.)那些不生成合并提交,因此没有提交消息.

(顺便说一下,推送与此无关 - 它只是将信息从一个repo复制到另一个repo.它不会创建提交.)

  • 真棒!非常感谢你!我之所以谈到"修复"和"避免"的原因是Linus在本次演讲中说,默认的合并消息是git中唯一的设计缺陷,但现在修复它已经太晚了,因为人们已经习惯了它.请访问http://video.linuxfoundation.org/video/1578上的视频.如果您下载它,可以快进.我认为这是他最后说的.也许在Q&A中. (4认同)

小智 6

git merge -m

我正在使用git 1.7.8


bra*_*aks 5

我不介意自动消息,但我确实想避免仅仅为了保留默认值而退出编辑器。以下选项实现了该行为(在我的脚本中):

GIT_MERGE_AUTOEDIT=no git merge origin/master
Run Code Online (Sandbox Code Playgroud)