当它们已从fs中删除时,从git索引中删除文件

时间:2011-05-22 20:57:24

标签: git filesystems

我从fs中删除了一堆文件,并在git status中列为已删除。

如何更快地暂存此更改,然后为每个文件运行git rm

6 个答案:

答案 0 :(得分:76)

你可以这样做:

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

每当提出这个问题时,人们会建议git add -u,但该答案的问题在于它还会在您的工作副本中进行其他修改,而不仅仅是删除。在许多情况下这可能没问题,但是如果您想暂时删除已从工作副本中删除的文件,我提出的建议会更精确。

实际上a section of the git rm documentation讨论了如何做你想做的事情 - 我相信“其他方式”部分中建议的命令与我在此建议的内容相同。

答案 1 :(得分:13)

使用-u - 标记:man git-add

git add -u .

答案 2 :(得分:2)

git commit -a将暂存已删除的文件(以及已修改的文件),并提示您提交提交消息。我通常执行git commit -av(详细)来查看修改文件的差异。

来自manual page

  

通过使用带提交的-a开关   命令自动“添加”更改   来自所有已知文件(即所有文件   已列在索引中)   并自动“rm”文件   已从中删除的索引   工作树,然后执行   实际提交;

答案 3 :(得分:2)

git add -A

将为您完成这项工作

答案 4 :(得分:2)

您可以使用git rm --cached "path/to/file"暂存一个已删除的文件。

使用git rm -r --cached -- "path/to/directory"暂存完整的已删除目录。

答案 5 :(得分:0)

在没有Cygwin 或powershell 的Windows上,您可以这样使用:

git ls-files --deleted -z | for /f %f in ('more') do git rm --cached "%f"