我从fs中删除了一堆文件,并在git status
中列为已删除。
如何更快地暂存此更改,然后为每个文件运行git rm
?
答案 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"