Git remove commit - 如何在提交前撤销 "git add"?

Git remove staged file / git

我误将文件添加到Git中的命令。

git add myfile.txt

Braiam



Answer #1

这没什么好担心的;这个文件确实还在版本库中,但只是作为一个 "松散的对象"。它不会被复制到其他仓库(通过克隆、推送),空间最终会被回收--尽管可能不会很快。如果你很着急,可以运行。

git gc --prune=now
$ git init
$ echo "version 1" > file.txt
$ git add file.txt   #首先添加file.txt
$ git commit -m 'first commit'
$ echo "version 2" > file.txt
$ git add  file.txt   #阶段(不提交)file.txt的“版本2”
$ git diff --cached file.txt
-version 1
+version 2
$ echo "version 3" > file.txt
$ git diff  file.txt
-version 2
+version 3
$ git add  file.txt    #糟糕,我们不是这个意思
$ git reset HEAD file.txt  #撤消?
$ git diff --cached file.txt  #当然没有。阶段== HEAD
$ git diff file.txt   #我们不可挽回地丢失了“版本2”
-version 1
+version 3