【问题标题】:Delete files from git index when they are already deleted from fs当文件已经从 fs 中删除时,从 git index 中删除文件
【发布时间】:2011-08-30 17:59:01
【问题描述】:

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

我怎样才能比为每个文件运行git rm 更快地进行此更改?

【问题讨论】:

标签: git filesystems


【解决方案1】:

如果删除的文件位于存在的父文件夹中,那么您可以简单地:

git add parent_folder_path/*

如果这不起作用,请尝试添加父级的父级:

git add parent_of_parent_path/parent_folder/*

如果这不是您想要的,请查看其他人的答案。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        git add -u .
        

        【讨论】:

        【解决方案5】:

        你可以这样做:

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

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

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

        【讨论】:

        • +1。只是出于兴趣,为什么是-z/-0?看起来git ls-files --deleted | xargs git rm 也能正常工作?
        • @Simon Whitaker:即使文件名中有空格或换行符,也可以通过输出列出的文件以 NUL 字节而不是换行符分隔来使命令正常工作。
        • 谢谢!这是一个很好的别名:'rd = "!git ls-files --deleted -z | xargs -0 git rm"'(将其放在 .gitconfig 中,不带外部单引号,在 [alias] 下。然后运行 ​​'git rd' 下一次)。
        • 这在 Windows 上不起作用,除非您安装了带有 xargs 的 Cygwin
        • 在没有 Cygwin 的 Windows 上,您可以像这样使用 powershell:git rm $(git ls-files --deleted )。 (注意:假设变更集大小合理,这实际上也适用于 Bash)。
        【解决方案6】:

        git 添加 -A

        将为您完成这项工作

        【讨论】:

        • 缺点是它也添加了未跟踪的文件。不是吗?
        【解决方案7】:

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

        来自manual page

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

        【讨论】:

          猜你喜欢
          • 2012-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-27
          相关资源
          最近更新 更多