每次我做一个
git pull origin master
Git 会弹出一个编辑器,让我在提交之前写一个关于合并的评论。知道为什么会发生这种情况吗?另一位开发人员也在做 master 的工作,并且没有遇到这个问题。
据我所知,分支配置是正确的。除了在我拉动时发生的烦人的合并提交之外,我还能够像往常一样拉下更改并上推更改。
git pull
git fetch
紧随其后的是git merge
。从 Git 1.7.10 开始,git merge
合并时会弹出一个编辑器(请参阅发行说明)。其他开发人员可能正在使用旧版本的 Git。
我不是 git 专家,但我遇到了这种行为并设法恢复到工作状态,所以这里是我的提示,所有这些都使用 git 版本 2.28.0(以及可能的早期版本) . 我怀疑更专业的人git
可以进一步简化这个答案。
当我做了一些事情来搞砸我的本地master
/main
分支导致它与它应该跟踪的不同步时,就会发生这种情况。我还没有弄清楚我做了什么来搞砸它,因为它发生的频率还不够高,我无法诊断出我行为中的错误。[更新:我想我现在已经在自己的工作流程中看到了导致这种情况的一种行为。我去 GitHub 查看 PR 并使用“查看命令行说明”信息中的复制链接来了解如何在我的工作区中获取 PR 的副本。复制的两个命令中的第一个是git checkout -b ...
. 但是,有时,我无意中在已经有一个具有该名称的分支的工作区中执行此操作(通常,我已经尝试过 PR 的早期草稿),因此命令失败,我仍在我的 master/main 分支上,然后粘贴下一个命令并将分支合并到我的主/主。然后我花了一段时间才意识到事情搞砸了]。
我注意到有两种方式进入了这种状态:
git pull origin master
(如OP中所述)Merge branch 'master' of https://github.com/[myOrg]/[myRepo] into master
这是我在发生此问题时的解决方法:
git log
Merge branch 'master' of https://github.com/[myOrg]/[myRepo] into master
master
分支与它应该跟踪的分支不同的点)git checkout [SHA]
git branch -m master master-broken
(可选,您可以删除它,但这更安全,您以后可以随时删除它)git checkout -b master
git pull [upstream source] master
在 OP 的情况下,我希望这是git pull origin master
)理解这个修复的一个关键见解是要意识到这个分支并没有什么特别之处master
——它只是一个约定。所以删除它(或重命名它)并使用该名称创建一个新的没有问题。
我不知道为什么会发生这种情况,但我可以提供解决方案。正如您所注意到的,它只发生在您身上,而不会发生在其他开发人员身上。所以有些东西在你这边坏了。我也有这个问题,因此历史看起来并不干净。一个激进的解决方案是在本地删除 master 并重新获取它,就这么简单。