Git:从...中删除完全不存在的文件...从我不知道在哪里

时间:2015-04-09 12:53:01

标签: windows git case ntfs

我在Windows上使用git。我曾经添加了一个文件,然后用大写字母更改了一个字母,再次使用新名称添加了它。从那以后,我总是有两个文件(一次是大写,一次不是)。

 myFile.ext
 myfile.ext

Git总是把它解释为两个不同的文件(因为它配置区分大小写)但它实际上是同一个文件,所以它跟踪这个文件两次,每个名称下都有一次。

我现在已经用

从repo中删除了大写文件
git rm --cached myFile.ext

所以我现在只有一个我的文件轨道,这一切都很好。

 myfile.ext

问题在于,如果我想在较旧的提交中进行结账,git说:

  

错误:以下未跟踪的工作树文件将被checkout覆盖:   myFile.ext   请在移动分支之前移动或移除它们。   中止

但是,我无法对此文件执行任何操作,因为它不在工作树中,也不在索引中。我试图移动文件,删除myfile.ext文件并再次添加,藏匿,但没有任何效果。 myFile.ext未在git status中显示,且不在gitignore中。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

也许最好的方法是使用以下命令从历史记录中删除myFile.ext:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch myFile.ext' HEAD