如何从git临时区域中删除文件?


How to remove files from git staging area?

我在本地repo中对一些文件进行了更改,然后我执行了git add -A,我认为它向临时区域添加了太多文件。如何删除临时区域中的所有文件?

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


可以使用

1
git reset HEAD -- path/to/file

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

1
git reset HEAD -- .

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


使用

1
git reset

把所有分阶段的文件都拆下来。


如果你已经提交了一堆不需要的文件,你可以解除它们的存储,并告诉Git用

1
git rm --cached -r .

--cached告诉它在不删除文件本身的情况下从临时目录和索引中删除路径,-r递归地操作目录。然后,您可以git add任何您想要跟踪的文件。


你可以用

1
git reset HEAD

然后添加所需的特定文件

1
git add [directory/]filename


如其他答案所述,您应该使用git reset。这将撤销git add -A的行动。

注:git reset相当于git reset --mixed这样做。

Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action. [ git reset ]


您可以通过以下几种方式重置临时区域:

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

    1
    2
    3
    4
     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


  • 我试过所有这些方法,但都不管用。我使用rm -rf .git从本地存储库中删除了.git文件,然后再次执行git initgit add以及常规命令。它起作用了。