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

5

我以前使用git reset来取消单个文件的暂存,但是我经常发现在提交之前需要取消多个文件的暂存。是否有一种命令可以取消所有已暂存的文件?我在文档中找不到它(http://git-scm.com/docs/git-reset)。

3个回答

9

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文档


2
git restore --staged :/ 将工作树中所有已暂存的文件恢复到“未暂存”状态。然后 git restore :/ 会丢弃未暂存的更改。请注意,使用 git mv 创建的任何文件仍将存在。 - user9645
@user9645的评论应该被接受为这个问题的答案。我们正在讨论多个文件以及如何以最简单的方式取消暂存它们。 - Niklas

1

试试这个:

git reset HEAD .

Git应该实际写下要做什么,当你执行git status时。
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在做什么。 - Gabriel Ferraz
git reset --soft HEAD 没有效果。软重置意味着你将 HEAD 重置到另一个提交,但不会重置索引或工作目录。在你的情况下,你想要将 HEAD 重置到的提交是 HEAD。因此没有效果。 - René Link
@René,你是对的。我再次检查了一下并修正了我的答案。 - Matej 'Yin' Gagyi

0

我使用SourceTree客户端。它有一个选项可以将所有文件添加到暂存区或者移除暂存区。你也可以与命令行结合使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接