我在我的工作树上看到一个被删除的本地文件,这让我发疯了。下面是发生的事情:
我将远程repo克隆到我的本地机器上:
git clone <my repo>
签出master并查看其状态
git checkout master
git status
尽管我什么也没做,我看到这个文件从我的本地机器上删除了
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: xyz.PNG
no changes added to commit (use "git add" and/or "git commit -a")
我可以在远程回购中看到这个文件。当然,如果我这样做:
git reset --hard HEAD
or
git checkout .
文件显示回来,状态又恢复为干净。
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
但是如果我签出其他分支,然后再次切换回master,则删除消息再次出现。就好像每次我切换到master时,都有什么东西在从我的本地删除这个特定的文件,但我不知道那是什么。
我已经查看了未分级更改显示文件为删除,即使它存在文件名中似乎没有空格(文件名周围没有引号):
git status --short
D xyz.PNG
This:
(文件实际上从树中消失,直到我做一个git重置)
是最重要的项。这意味着当Git说文件被删除时,它并没有说谎,但是删除不是为了提交而进行的。D xyz.PNG
(注意这里的D
之前有一个前导空格)作为一个短状态意味着同样的事情:文件神秘地从工作树中消失了。(注意,如果你自己删除了它,这并不神秘:这是意料之中的。)
git checkout
最初未能检出文件,Git应该注意到这一点并提出投诉。没有任何抱怨,这意味着git checkout
是成功的,并将普通文件放入计算机上的普通目录中。一定是别的东西把它移走了。
你的任务,如果你选择接受它,就是找出这个"东西"是什么。。它不是Git。(是某种杀毒软件吗?如果是这样,为什么以后的重置或签出没有得到同样的处理?您是否将您的工作树存储在共享或云同步的位置?)