[英]How to fix a git tracked file that is treated as untracked?
我有一個奇怪的問題,我想要簽出一個不同的分支<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>
然后checkout我得到正確的文件。)
要回到<branch1>
我會得到完全相同的問題(跟蹤<filename.xlsx>
,但是對於checkout似乎沒有跟蹤)。
進一步調查這似乎與Windows / Linux問題有關:
老實說,這是一個相對容易解決的問題,到目前為止只有這兩個副本的范圍有限,但它讓我很感興趣。 如果對git有更多了解的人對如何診斷/解決這個問題的根本原因有任何想法,我將非常感激。
以下是來自<branch1>
的git ls-files --debug
的結果
CodeSheet.xlsx
ctime: 1489465633:751038200
mtime: 1489465633:751038200
dev: 38 ino: 5432
uid: 0 gid: 999
size: 14752 flags: 0
以下是來自<branch2>
的git ls-files --debug
的結果
Codesheet.xlsx
ctime: 1489467487:720851100
mtime: 1489467487:720851100
dev: 38 ino: 5502
uid: 0 gid: 999
size: 12546 flags: 0
只是一個猜測:這可能是一個具有不同情況但名稱相同的文件的情況 。
從不區分大小寫的Windows操作系統角度來看,它是跟蹤的,但從區分大小寫的Debian OS角度來看,它沒有被跟蹤。
嘗試:
git config core.ignorecase true
OP Gavin 在評論中使用git mv
命令使用“ 在Git中更改文件名的大寫 ”來提及。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.