【发布时间】:2011-08-30 17:59:01
【问题描述】:
我从 fs 中删除了一堆文件,并在 git status 中列为已删除。
我怎样才能比为每个文件运行git rm 更快地进行此更改?
【问题讨论】:
-
你问的问题和this question差不多。
标签: git filesystems
我从 fs 中删除了一堆文件,并在 git status 中列为已删除。
我怎样才能比为每个文件运行git rm 更快地进行此更改?
【问题讨论】:
标签: git filesystems
如果删除的文件位于存在的父文件夹中,那么您可以简单地:
git add parent_folder_path/*
如果这不起作用,请尝试添加父级的父级:
git add parent_of_parent_path/parent_folder/*
如果这不是您想要的,请查看其他人的答案。
【讨论】:
在没有 Cygwin 或 powershell 的 Windows 上,您可以像这样使用:
git ls-files --deleted -z | for /f %f in ('more') do git rm --cached "%f"
【讨论】:
您可以使用git rm --cached "path/to/file" 暂存单个已删除文件。
使用git rm -r --cached -- "path/to/directory" 暂存一个完全删除的目录。
【讨论】:
使用-u-标志:man git-add
git add -u .
【讨论】:
你可以这样做:
git ls-files --deleted -z | xargs -0 git rm
每当提出这个问题时,人们都会建议git add -u,但这个答案的问题在于它还会在您的工作副本中进行其他修改,而不仅仅是删除。在许多情况下这可能没问题,但如果您只想暂缓删除已从工作副本中删除的文件,我提出的建议更准确。
实际上有 a section of the git rm documentation 讨论了如何做你想做的事 - 我相信“其他方式”部分中建议的命令与我在这里建议的命令相同。
【讨论】:
git ls-files --deleted | xargs git rm 也能正常工作?
git rm $(git ls-files --deleted )。 (注意:假设变更集大小合理,这实际上也适用于 Bash)。
git 添加 -A
将为您完成这项工作
【讨论】:
git commit -a 将暂存已删除的文件(以及修改的文件)并提示您输入提交消息。我通常执行git commit -av(详细)来查看修改文件的差异。
来自manual page:
通过在提交中使用 -a 开关 命令自动“添加”更改 从所有已知文件(即所有文件 已经在索引中列出的) 并自动在 已删除的索引 工作树,然后执行 实际提交;
【讨论】: