我在Windows上使用git。我有源存储库和两个具有相同文件结构的本地存储库。在firlst本地存储库中,我通过使用`mv git Folder \ file.txt文件夹\ file.txt'重命名来更改文件夹的大小写。并提交重命名。然后推到原点。在第二个本地存储库中,我提取了更改,但案例没有反映出来。当我看到该文件的日志时,我可以看到它已重命名。这些变化没有反映出来的原因是什么?有趣的是,对于我重命名的其他一些文件夹,反映了这些更改。
答案 0 :(得分:1)
我不确定它会做什么但是尝试
使用HEAD
:
git read-tree -i HEAD
删除应重命名的文件和/或目录:
del blah
rmdir foo
强制从索引版本中创建工作树文件:
git checkout-index -a -f
将来请注意,Git不幸与您的情况不符。这是可以理解的:在Windows上,NTFS在不区分大小写的情况下不区分大小写,并且FAT既不区分大小写,也不保留大小写。 IOW,似乎只有没有理智的行为,Git可以在这个问题上表现出来:一方面它应该在提交树和'foo / bar中处理'FoO / bAr.tXt'。文件系统上的txt'表示同一个文件,另一方面它们应该表示不同的东西?它不会起作用,我能设想的唯一解决方案是一些特定于Windows的黑客,例如git checkout-index --fix-work-tree-name-casing
,它实际上会重命名工作树实体以匹配索引。
更新,可以使用git reset --mixed HEAD
代替git read-tree
。