偶尔,我会遇到一个非常奇怪和令人沮丧的 git 问题。我提交并推送一些包含新文件和修改文件的更改,而我的同事将一些其他不相关的内容提交到不同的文件。
现在,当他拉出我的更改时,我新添加的文件在他这边显示为未跟踪,并且我的更改被还原。没有意识到这一点,他提交并推送到存储库,而我的更改完全被 git 忘记了。
例如,如果我更改了 file A
,那么如果我这样做git log -p A
了,我根本看不到他对我的更改的还原,我也看不到我更改它的提交。但是如果我查看 git 历史并找到那个提交,我的更改就在那个提交中。我的提交仍然存在于 git 历史记录中,但没有 git commit 可以恢复我的东西,但不知何故,它在最新的 master 中被恢复了,因为我的提交中的更改已以某种方式从 master 分支中删除。
有没有人遇到过类似的事情?我的第一个想法是他在提交自己的更改之前正在拉取,但他声称他在拉取之前就提交了。另一种可能性是他有一个 IDE(PyCharm),里面有一个 git 客户端(但他使用命令行 git),它以某种方式破坏了他机器中的 git。另一件需要注意的是,他运行 Windows 而我运行 OS X,所以可能是 git 版本冲突。
另一件可能很重要的事情:Doinggit log -p myfile
不会显示我更改它的提交,显示我的更改,但没有git log --follow -p myfile
显示恢复它的其他更改。
当我发布时git log
,我可以看到我做出更改的提交以及与之相关的更改fileA
。只有当我发布时,git log -p fileA
我才能看到对fileA
. 所以,提交在那里,合并到主控,但它的影响已经消失了。
有任何想法吗?