5

我的 Git 状态显示deleted我的工作树中的所有文件都不正确,它们仍然存在。

为了解决它,我应该执行git reset --hardwhich 重置我对其他文件的所有修改。

知道如何解决它或它是如何发生的吗?

git status输出:

On branch develop
Your branch is behind 'origin/develop' by 15 commits, and can be fast-forwarded.

Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

deleted:    .gitignore
deleted:    v3/.gitignore
deleted:    v3/index-test.php
deleted:    v3/index.php
deleted:    v3/protected/.gitignore
deleted:    v3/protected/.htaccess
deleted:    v3/protected/Gruntfile.js

编辑:以上不是完整的git status输出。我正在处理的那些文件不会被删除。

4

3 回答 3

2

如果唯一的问题是某些文件已从索引中删除,但仍在工作树中,那么您需要做的就是:

git reset

默认情况下,git reset默认为混合模式:

--混合
重置索引但不重置工作树(即保留更改的文件但未标记提交)并报告尚未更新的内容。这是默认操作。

因此,它将使您的更改保持原样,但取消所有内容。如果您发现这些文件实际上丢失了,那么您需要检查它们以恢复它们:

git checkout -- path/to/file/or/dir

git status如果您有很多文件,您可以解析using的简写形式cutxargs帮助执行此操作。不过,我将把它作为练习留给读者,因为您声称所有文件都在那里。

于 2013-10-09T10:52:25.530 回答
2

如果您使用从本地磁盘删除文件

rm file.name

如果file.name已经签入 git。然后你应该实际发出这个命令

git rm file.name

告诉 git 你不希望它再跟踪那个文件

于 2013-10-09T10:59:01.107 回答
1
  git co my_annoying_file
  git rm my_annoying_file
  git commit -m "removing annoying file"

现在它们已真正从 git 跟踪中删除

...git reset --hard对于这种情况也可能很脆弱,考虑git reset HEAD my_annoying_file

于 2013-10-08T08:05:52.587 回答