我的存储库中的文件让我很头疼。 git status
在“未提交的提交更改”下显示为“已删除”,并且还显示“未跟踪文件”下的完全相同的文件!该文件非常明确地存在于我的磁盘上以及远程存储库中。如果我删除该文件,“未跟踪文件”中的条目将消失,但另一个文件将保留。
现在我的问题:这有什么意义?我该如何解决?
$ git checkout -- .
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
deleted: solution02/exercise02.txt
Untracked files:
(use "git add ..." to include in what will be committed)
solution02/exercise02.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git status --short
D "solution02/exercise02.txt "
?? solution02/exercise02.txt
$ rm solution02/exercise02.txt
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add/rm ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
deleted: solution02/exercise02.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git status --short
D "solution02/exercise02.txt "
只是为了澄清:第一个git status
是对我没有任何意义的那个,因为它在“未提交的更改”下将文件列为“已删除”。但该文件未被删除。它存在。
答案 0 :(得分:2)
当文件被巧妙地重命名时,会发生这种情况。即什么时候磁盘上的名称与Git存储库中的名称不匹配,甚至认为两个名称在视觉上匹配。例如:
如果名称包含非ascii字符(重音字母),则可以为同一字符编码。由于例如UTF-8规范化,Mac OS X下旧版本的Git存在已知问题。
其中一个名称中可能只有空格更改(例如尾随空格)。 git status --short
将显示有关文件名的更多详细信息(如果需要,可以在名称周围加上双引号,......),并且可能会有所帮助。
解决方案是将文件重命名为Git名称。对“已删除”名称进行精确剪切和粘贴可能会有所帮助。
编辑:在实际输出命令中更新之后,结果是第二个选项:在Git跟踪的文件名中“exercise02.txt
”之后有一个尾随空格。
答案 1 :(得分:-1)
如果您手动删除了该文件,它将在git status
中显示为未跟踪的文件。但是如果您使用git rm filename
删除了该文件,它将自动暂存,当您在此之后运行git status
时,它将显示为已删除的文件。所以总结下面的2个命令
rm filename
git add filename
相当于一行命令
git rm filename
在您结帐到任何其他分支之前提交您的更改,因为它将显示为已更改的文件,除非您提交更改,即使您结帐到其他分支