Git:每个pull on origin master都会导致与消息合并

时间:2013-03-06 20:00:48

标签: git git-merge git-pull

每次我做

git pull origin master

Git弹出一个编辑器,要求我在提交之前写一个关于合并的评论。知道为什么会这样吗?另一位开发人员也在做master工作,但没有遇到过这个问题。

据我所知,分支配置是正确的。除了我拉动时发生的令人讨厌的合并提交,我能够正常下拉变化并推动更改。

3 个答案:

答案 0 :(得分:6)

git pullgit fetch,后跟git merge。从Git 1.7.10开始,git merge在合并时会弹出一个编辑器(参见release notes)。另一个开发人员可能正在使用旧版本的Git。

答案 1 :(得分:0)

我不是 git 专家,但我遇到了这种行为并设法恢复到工作状态,所以这里是我的提示,所有这些都使用 git 2.28.0 版(可能还有更早的版本)同样)。我怀疑在 git 方面更专业的人可以进一步简化这个答案。

当我做了一些事情来搞砸我的本地 master/main 分支,导致它与它应该跟踪的分支不同步时,就会发生这种情况。我还没有弄清楚我做了什么把它弄得一团糟,因为它发生的频率还不够高,不足以让我诊断出我行为中的错误。

我注意到我进入这种状态的方式有两种:

  • 通过执行 git pull origin master 时弹出的编辑器窗口(如 OP 中所述)
  • 当我推送到 GitHub 的 PR 显示 Merge branch 'master' of https://github.com/[myOrg]/[myRepo] into master 形式的提交时

当它发生时我是如何解决这个问题的:

  • 首先,我在我的分支历史记录中找到了包含此消息的最旧的合并提交:
    • 浏览日志:git log
    • 使用消息 Merge branch 'master' of https://github.com/[myOrg]/[myRepo] into master
    • 及时搜索最早的提交
    • 在此之前查找提交的 SHA(即,我的 master 分支与它应该跟踪的分支不同的点)
  • 将我的分支备份到那个 SHA:git checkout [SHA]
    • 这将使您的分支进入“分离的 HEAD”状态
  • 重命名我搞砸的主分支,让它不碍事git branch -m master master-broken (可选地,您可以删除它,但这样更安全,您以后可以随时删除它)
  • 将我当前分离的 HEAD 分支重命名为 master:git checkout -b master
  • 将分支恢复到应有的位置:git pull [upstream source] master(在 OP 的情况下,我希望它是 git pull origin master

理解此修复程序的一个关键洞察是要意识到 master 分支没有什么特别特别之处——它只是一个约定。所以删除它(或重命名它)并用该名称创建一个新的没有问题。

答案 2 :(得分:0)

我不知道为什么会发生这种情况,但我可以提供解决方案。正如您所注意到的,它只发生在您身上,而不会发生在其他开发人员身上。所以你这边有些东西坏了。我也有这个问题,因此历史看起来并不干净。一个激进的解决方案是在本地删除 master 并重新获取它,就这么简单。