我有一个奇怪的问题,我想要结帐另一个分支<branch2>
,但是当我尝试时,我会收到消息
$ git checkout <branch2>
error: The following untracked working tree files would be overwritten by checkout:
<filename.xlsx>
Please move or remove them before you switch branches.
Aborting
但是git ls-files
将<filename.xlsx>
列为跟踪文件。
如果我执行git checkout -f <branch2>
它可以正常工作,并且excel文件的<branch2>
版本存在并且正确(类似于我rm <filename.xlsx>
然后结帐我得到正确的文件。)
要返回<branch1>
,我会收到完全相同的问题(<filename.xlsx>
已被跟踪,但结帐似乎未跟踪。)
进一步调查这似乎与Windows / Linux问题有关:
老实说,这是一个相对容易解决的问题,到目前为止只有这两个副本的范围有限,但它让我很感兴趣。如果对git有更多了解的人对如何诊断/解决这个问题的根本原因有任何想法,我将非常感激。
以下是来自git ls-files --debug
<branch1>
的结果
CodeSheet.xlsx
ctime: 1489465633:751038200
mtime: 1489465633:751038200
dev: 38 ino: 5432
uid: 0 gid: 999
size: 14752 flags: 0
以下是来自git ls-files --debug
<branch2>
的结果
Codesheet.xlsx
ctime: 1489467487:720851100
mtime: 1489467487:720851100
dev: 38 ino: 5502
uid: 0 gid: 999
size: 12546 flags: 0
答案 0 :(得分:3)
猜猜:这可能是case of a file with a different case but the same name 从不区分大小写的Windows操作系统角度来看,它是跟踪的,但从区分大小写的Debian OS角度来看,不跟踪。
尝试:
git config core.ignorecase true
使用OP Gavin命令in the comments使用“Changing capitalization of filenames in Git”提及git mv
。