【问题标题】:Unstage all deleted files in Git在 Git 中取消暂存所有已删除的文件
【发布时间】:2011-05-14 01:50:57
【问题描述】:

我想取消暂存所有文件删除。有什么简单的方法吗?

我想将此应用于所有删除的文件模式。

【问题讨论】:

    标签: git delete-file git-add git-stage


    【解决方案1】:

    请参阅“取消暂存文件”in this book 部分。

    【讨论】:

    • 链接现在看起来很有趣,但这本书很有帮助。
    【解决方案2】:

    以防万一其他人在 PowerShell 中使用 git,这里是 @jefromi 出色答案的 powershell 版本:

    git status --porcelain | where { $_.StartsWith(" D") } | foreach-object { git reset HEAD $_.replace(" D ", "") }
    

    【讨论】:

      【解决方案3】:

      如果您从git status 返回的路径/文件名包含 space 字符,对awk 的调用可以修改为包括 整个(引用的)路径/文件名,包括空格:

      git status --porcelain|awk '$1 == "D" {print substr($0, index($0,$2))}'|xargs git reset HEAD
      

      【讨论】:

        【解决方案4】:

        git status --porcelain 的输出是为这样的任务构建单行代码和脚本的好方法:

        git status --porcelain | awk '$1 == "D" {print $2}' | xargs git reset HEAD
        

        【讨论】:

        • @Jacko:绝对是方便的东西。您也可以使用 sed 轻松完成此操作:sed -n '/^D /s/^D //p
        • 我之前的评论缺少单引号。
        • 旧线程,但值得注意的是,答案在 git status 中被引号包围的文件中分解。
        • 警告:如果您不在存储库的主文件夹中(即我在子文件夹中尝试过但它不起作用 - 作为 git status --porcelain给出相对于主文件夹的路径)
        猜你喜欢
        • 2012-03-24
        • 1970-01-01
        • 2021-01-19
        • 2020-11-14
        • 2014-09-14
        • 2021-11-18
        • 2017-08-26
        • 2018-12-18
        • 2012-09-04
        相关资源
        最近更新 更多