当我运行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术语中我认为这是有道理的。]
答案 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