Git提交删除了一个文件,但我不明白如何

时间:2012-01-12 14:04:39

标签: git msysgit

文件从Git存储库中消失了,但没有提交删除它。我注意到它只是因为项目无法编译。 我试图将第二个错误提交一分为二 - 即当此文件消失时第一次提交,但提交历史记录与此文件无关,在diff中没有任何内容可以删除它。 我正在使用Win7机器和MSysGit与Git(GitHub)一起工作。 我不知道它是怎么发生的,我想知道它是什么造成的。欢迎任何有关如何调查的建议!

3 个答案:

答案 0 :(得分:2)

很可能该文件从未添加到git存储库中。不幸的是,这是一个相对常见的错误;你创建一个文件但从未将其添加到git。由于git对此一无所知,因此无法帮助您恢复文件。要避免此问题,请经常运行git status并让git告诉您工作目录中存在的不知道的文件。另外,克隆repo并确保构建在克隆中成功。

答案 1 :(得分:1)

我有一次类似的案子。事实证明,由于错误的冲突解决,文件(或者在我的情况下,对该文件的更改)作为合并提交的一部分消失了。假设如下:

  • 你的"主人" branch有一个文件A.
  • A" devel"分支基于" master"修改文件A并添加文件B.
  • On" master",A也被修改。
  • 合并"开发"到"掌握"在文件A中创建冲突。

如果您现在解决了A中的冲突,但也从合并提交中取消了非冲突的B,则B"消失"并且不在" master"虽然Git会告诉你" devel"完全合并到" master"。此外,log / gitk中没有任何迹象表明B作为合并提交的一部分被删除了。

答案 2 :(得分:0)

当在文件名中更改大小写(下/上)时,例如通过删除然后使用新案例重新创建它,就会在Windows上发生这种情况。

当您提取此更改时,删除将使git删除“错误”文件,因为Windows不区分大小写。

解决方法,如果你没有更改文件:使用git reset - filename和git checkout - filename