在 Git 中重置所有暂存文件的最简单方法是啥?

Posted

技术标签:

【中文标题】在 Git 中重置所有暂存文件的最简单方法是啥?【英文标题】: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) 上找不到它。

【问题讨论】:

【参考方案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 所有文件的选项。您也可以将它与命令行结合使用。

【讨论】:

以上是关于在 Git 中重置所有暂存文件的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何将提交移动到 git 中的暂存区?

在 Git 中列出冲突文件的最简单方法是啥?

在单击按钮时重置/重新初始化/重新启动 UIViewController 视图的最简单(正确)方法是啥?

在 Vim 中,将文件中的所有行合并为一行的最简单方法是啥?

将所有 memcached 密钥转储到文件中的最简单方法是啥?

在 Android 中保存 ArrayList 的最简单方法是啥?