912

我在本地 repo 中对我的一些文件进行了更改,然后我做git add -A了我认为向暂存区添加了太多文件的操作。如何从暂存区删除所有文件?

完成后,我将手动执行git add "filename".

4

14 回答 14

1081

您可以使用从索引中取消暂存文件

git reset HEAD -- path/to/file

就像 一样git add,您可以通过目录等递归地取消暂存文件,因此要一次取消暂存所有内容,请从存储库的根目录运行:

git reset HEAD -- .

此外,为了将来参考, 的输出git status将告诉您将文件从一种状态移动到另一种状态所需运行的命令。

于 2013-11-01T16:10:11.090 回答
446

利用

git reset

取消暂存所有暂存文件。

于 2016-09-12T16:15:29.337 回答
136

如果您已经提交了一堆不需要的文件,您可以取消暂存它们告诉 git 将它们标记为已删除(而不实际删除它们)

git rm --cached -r .

--cached告诉它从暂存和索引中删除路径而不删除文件本身并-r递归地对目录进行操作。然后git add,您可以跟踪任何要跟踪的文件。

于 2013-11-01T16:21:56.947 回答
82

现在在 v2.24.0 建议

git restore --staged .

取消暂存文件。

于 2019-11-13T05:44:42.340 回答
53

使用以下命令从暂存区域中删除特定文件:

git restore --staged <individual_file>

或使用以下命令删除当前暂存的所有文件:

git restore --staged .

在将文件添加到暂存区域后,在您的 git bash 终端中,您可以运行 agit status并在当前暂存文件上方为您显示该命令: 在此处输入图像描述

于 2021-02-23T12:04:31.743 回答
36

你可以使用

git reset HEAD

然后添加您想要的特定文件

git add [directory/]filename
于 2015-11-15T21:07:15.017 回答
23

要从暂存区中删除所有文件,请使用 -
git reset
要删除特定文件,请使用 -
git reset "File path"

于 2020-01-20T11:05:48.910 回答
16

这很简单:

  1. 要检查当前目录中任何文件的当前状态,是否已暂存:

    git status

  2. 暂存任何文件:

    git add .对于当前目录中的所有文件

    git add <filename>对于特定文件

  3. 取消暂存文件:

    git restore --staged <filename>

于 2020-08-30T07:31:15.807 回答
9

如其他答案所述,您应该使用git reset. 这将撤消git add -A.

注意: git reset相当于git reset --mixedwhich does this

重置索引但不重置工作树(即保留更改的文件但未标记提交)并报告尚未更新的内容。这是默认操作。[混帐重置]

于 2017-03-18T13:31:06.500 回答
8

如果不需要的文件被添加到暂存区域但尚未提交,那么简单的重置将完成这项工作:

$ git reset HEAD file
# Or everything
$ git reset HEAD .

要仅删除当前工作目录中未暂存的更改,请使用:

git checkout -- .
于 2020-03-10T11:11:13.047 回答
2

利用

git reset HEAD

这将从暂存区中删除所有文件

于 2020-03-03T10:46:25.893 回答
2

使用“ git reset HEAD <file>...”取消暂存文件

例如:取消暂存所有文件

git reset HEAD .

取消暂存一个文件

git reset HEAD nameFile.txt
于 2020-01-17T14:44:29.003 回答
1

您可以通过以下几种方式重置暂存区域:

  1. 重置 HEAD 并添加所有必要的文件以再次签入,如下所示:

     git reset HEAD ---> removes all files from the staging area
     git add <files, that are required to be committed>
     git commit -m "<commit message>"
     git push 
    
于 2018-08-02T04:43:45.403 回答
-8

我尝试了所有这些方法,但没有一个对我有用。我使用本地存储库的形式删除了 .git 文件rm -rf .git,然后再次执行git initgit add常规命令。有效。

于 2018-03-23T03:04:20.390 回答