【问题标题】:What is the simplest way to reset all staged files in Git?在 Git 中重置所有暂存文件的最简单方法是什么?
【发布时间】:2015-11-19 05:01:46
【问题描述】:

我之前使用git reset 处理单个文件,但我经常发现自己必须在提交之前取消暂存多个文件。是否有取消暂存所有暂存文件的命令?我在文档 (http://git-scm.com/docs/git-reset) 上找不到它。

【问题讨论】:

    标签: git version-control


    【解决方案1】:

    试试这个:

    git reset HEAD .
    

    当你执行git status时,Git 应该真正写出要做什么

    6:16:17 {proj_main} ~/git/proj_main$ git status
    On branch proj_main
    Your branch is up-to-date with 'origin/master'.
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
            modified:   sub_proj/.project
    

    【讨论】:

    • 谢谢 Matej。虽然 GIt 没有给我这个选项。我不确定我的 Git 会发生什么,但每次发生合并冲突时,我什至没有触摸的几个文件会在暂存区域显示,准备提交。这很奇怪。我必须取消暂存这些文件,因为我不知道 Git 在做什么。
    • git reset --soft HEAD 无效。重置软意味着您将 HEAD 重置为另一个提交,而不是索引或工作目录。在您的情况下,您要将 HEAD 重置为 HEAD 的提交。所以没有效果。
    • @René 你是对的。我再次检查并修复了我的答案
    【解决方案2】:

    git status 通常会显示选项,例如

    On branch master
    Changes to be committed:
    (use "git reset HEAD <file>..." to unstage)
    
        modified:   someFile.txt
        modified:   someDir/someOtherFile.txt
    

    因此,如果您想取消暂存所有文件,只需执行 git 建议的操作

    git reset HEAD
    

    编辑

    从 Git 2.23 开始,您可以使用 git restore --stagedgit restore 还可以从另一个提交 (-s) 恢复工作树文件并以交互方式运行 (-p)。还有更多有趣的选项可用。请参阅git restore documentation

    【讨论】:

    • git restore --staged :/ 将工作树中的所有暂存文件恢复为“未暂存”状态。然后git restore :/ 丢弃未暂存的更改。请注意,使用git mv 创建的所有文件仍然存在。
    【解决方案3】:

    我使用SourceTree 客户端。它具有 Stage 和 UnStage 所有文件的选项。您也可以将它与命令行结合使用。

    【讨论】:

      猜你喜欢
      • 2011-03-05
      • 1970-01-01
      • 2015-02-21
      • 2011-09-13
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2012-08-16
      相关资源
      最近更新 更多