当从其他分支中提取时,Git请求提交消息

时间:2013-02-01 15:46:24

标签: git version-control terminal

我们公司的git工作流程看起来像这样:每个团队成员都有自己的分支机构,并从推出一个名为develop的主分支。

每当我走git pull develop时,git会自动打开一个texteditor(我心爱的vim)并询问Explain why this merge is necessary

为什么会这样,我怎么能摆脱它?

2 个答案:

答案 0 :(得分:3)

默认情况下,git pull命令为git fetch后跟git merge。合并将检查是否可以“快进”,这只是将正在合并的分支的提交添加到您的分支中;但是当你的分支机构发生了变化时,往往是不可能的。

在这种情况下,合并将创建一个合并提交,以便在分支上的更改中累积所引入的分支上的更改。这个提交需要一条消息,可以默认(使用--no-edit参数)到'merge into into'的行;但通常被视为不太有帮助。调用编辑器以允许为合并输入有意义的消息。

无论您是否编辑消息或使用默认值,都会创建“额外”提交并使历史记录混乱,因为它不是您在分支上所做工作所需的提交。只是为了“赶上”你的分支与其他分支上发生的事情

不向您的分支添加不需要的提交的替代方法是使用git pull --rebase。这将允许您赶上其他分支中的提交,而无需额外提交的麻烦。这篇文章更详细地讨论了它:pull with rebase

答案 1 :(得分:2)

您可以在git-merge

中看到这一点
  

- 修改

     

- 无编辑

     

在提交成功合并之前调用编辑器以进一步编辑默认合并消息。 --no-edit选项可用于   接受自动生成的消息(通常不鼓励这样做)   合并带注释的标签,在这种情况下git merge会自动生成   编辑器,以便标签的GPG验证结果可以   被人看见。

     

较旧的脚本可能取决于不允许的历史行为   用户编辑合并日志消息。他们将看到一位编辑开放   当他们运行git merge来合并带注释的标签时。为了更容易   将此类脚本调整为更新的行为,即环境   变量GIT_MERGE_AUTOEDIT可以在它们的开头设置为no。

我通过在export GIT_MERGE_AUTOEDIT=no

中添加.bash_profile来解决这个问题