从Git中的“已更改但未更新”中删除所有已删除的文件

时间:2010-07-03 00:14:59

标签: git

当我运行git status时,我有一堆

形式的行
deleted:    dir/file.js

我可以使用git checkout -- dir/file.js单独删除这些内容,但必须有一种不那么费力的方法。 (是的,我知道我应该首先使用git rm ...)

[更新:正如Mark在下面指出的那样,git checkout --实际上会恢复已删除的文件,而我认为它会从git索引中删除它。我有点困惑,因为当你运行git status时,它说:

use "git checkout -- <file>..." to discard changes in working directory

对我而言,“丢弃更改”并不意味着“恢复您删除的文件”,但在git术语中我认为这是有道理的。]

3 个答案:

答案 0 :(得分:37)

正如猖獗指出的那样,您仍然可以使用git rm来删除已在工作副本中删除的文件(例如,在您的情况下只是git rm dir/file.js。)如果您有很多这些文件在“已更改但未更新”下列为“已删除:”,我首先会检查git ls-files --deleted是否生成这些文件的列表,如果是,请将其删除:

git ls-files --deleted -z | xargs -0 git rm

答案 1 :(得分:35)

那么,您要提交删除这些文件吗? 然后使用

git add -u
git commit

答案 2 :(得分:1)

您事后仍然可以git rm,但如果您愿意,可以使用git reset --hard

将所有已更改的文件(包括删除)恢复到上一版本