这个问题可能不太可能,因为我仍然不能可靠地复制这个问题,但我的几个同事已经多次遇到这种情况,但仍然让我感到困惑。
有时,Git 扩展(在 Windows 7 上)会在提交并执行推送后在其工作目录中显示不属于它们自己的待处理更改。推送失败是因为它说他们有待处理的更改,尽管事实上他们在推送之前几乎没有提交所有待处理的更改。这就是我被叫过来的时候。在检查更改后,它们是由另一个提交者所做的更改并推送到源。有几次更改甚至是由我完成的更改。
开发人员 A(我们称其为 Bob)继续对他的存储库进行一系列更改。然后 Bob 提交这些更改并将提交推送到源。
开发人员 B(我们称之为 Fred)也进行了一些更改并将它们提交到他的存储库。然后 Fred 尝试将这些更改推送到 origin。在这一点上,我希望 Fred 会收到一条错误消息,说他的存储库落后于原点 1 次提交,并告诉他先 pull 。但是,他得到的错误是推送失败,因为他的工作目录中有未决的更改。当 Fred 查看挂起的更改时,他发现所有更改实际上都是 Bob 提交中所做的更改。
当 Fred 提交这些更改时,就好像它们是他自己的一样,那么一切似乎都很好。没有什么会中断,但是当它发生时却非常奇怪。我还没有看到如果我们尝试撤消挂起的更改会发生什么,因为我担心如果我们这样做,这些更改基本上会被还原。
有没有其他人在使用 Git 或 Git Extensions 时经历过这种奇怪的行为?
更新
我在我们的项目历史中发现了一个发生这种情况的实例。两次提交都对相同数量的文件进行了完全相同的更改,但提交是由两个不同的开发人员完成的。
这是 Bob 的原始提交: 这是 Fred 的古怪 promise : 编辑:澄清一下,Fred 打算输入“推送更改”作为提交消息,因为正是尝试推送(而不是 pull )的行为导致神秘的待处理更改出现。
最佳答案
您能否复制并发布错误消息,下次发生时? Help -> Git command log 的内容也会有帮助。 Fred 是否勾选了 Auto pull on rejected 选项(FormPush -> Advanced options)?
关于Git Extensions 有不属于我自己的未决更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10622259/