4

我们公司的 git 工作流程是这样的:每个团队成员都有自己的分支,并从一个名为 develop 的主分支中提取和推送。

每当我去git pull developgit 时,它会自动打开一个文本编辑器(我心爱的 vim)并询问Explain why this merge is necessary.

为什么会这样,我该如何摆脱它?

4

2 回答 2

3

默认情况下,该git pull命令是 agit fetch后跟 a git merge。合并将检查是否可以“快进”,这只是将要合并的分支中的提交添加到您的分支中;但是,当您的分支发生更改时,通常是不可能的。

在这种情况下,合并将创建一个合并提交,以将正在拉入的分支上的更改与您的分支上的更改一起累积。此提交需要一条消息,可以将其默认(使用 --no-edit 参数)为类似于 'merged into' 的内容;但通常被认为没有帮助。调用编辑器以允许为合并输入有意义的消息。

无论您是编辑消息还是使用默认值,都会创建“额外”提交并混淆历史记录,因为它不是您在分支上进行的工作所需的提交。它只是为了“赶上”您的分支与另一个分支上发生的事情

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

于 2013-02-01T16:30:12.683 回答
2

你可以看到这个git-merge

- 编辑

--no-edit

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

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

我通过添加我的来解决export GIT_MERGE_AUTOEDIT=no.bash_profile

于 2013-02-01T16:02:46.883 回答