偶尔,我遇到了一个非常奇怪和挫折的问题与git。我承诺并推动一些包括新文件和修改文件的更改,而我的同事将其他不相关的东西提交给不同的文件。我的同事的更改删除我在git中的提交
现在,当他提取我的更改时,我新添加的文件显示为未跟踪到他的一侧,并且我的更改已恢复。不知道这一点,他提交并推送到存储库,我的更改完全被git遗忘。
例如,如果我更改了文件A
,那么如果我的确做了git log -p A
,我根本看不到他对我所做的更改的恢复,我也看不到我改变它的提交。但是如果我查看git历史记录并发现提交,那么我的更改就在那个提交中。我的提交仍然存在于git历史记录中,但没有任何git commit可以恢复我的东西,但不知何故它会在最新的主服务器中恢复,因为我的提交中的更改已经以某种方式从主分支中删除。
有没有人遇到过类似的东西?我的第一个想法是他在做出自己的改变之前就拉扯了一下,但他声称自己在拉动之前犯下了什么。另一种可能性是他有一个IDE(PyCharm),里面有一个git客户端(但他使用了命令行git),这会破坏他机器上的git。另外需要注意的是,他在运行OS X时运行Windows,所以也许它可能是git版本冲突。这可能是重要的
的另一件事:做git log -p myfile
不不显示承诺中,我改变了它,git log --follow -p myfile
显示了我的变化,但表明恢复它没有其他变化。
当我发出git log
时,我可以看到提交更改和fileA
相关的更改。只有当我发出git log -p fileA
我看不到fileA
的变化。所以,承诺在那里,合并到主,但其效果已经消失。
任何想法?
'git log -p --full-history A'显示了什么? –
我刚刚做了一个编辑。git log -p A不显示我的更改,而git log -p --full-history和git log -p --follow都显示我的更改,但没有更改已恢复的更改。 – ustun
“他在我运行OS X时运行Windows”......您是否在文件系统中使用了相同的大小写约定和/或是否在适当情况下使用了'core.ignorecase'? –