我们公司的git工作流程看起来像这样:每个团队成员都有自己的分支机构,并从推出一个名为develop的主分支。
每当我走git pull develop
时,git会自动打开一个texteditor(我心爱的vim)并询问Explain why this merge is necessary
。
为什么会这样,我怎么能摆脱它?
答案 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
来解决这个问题