我怎样才能彻底撤消刚完成的git commit

时间:2014-06-07 05:39:39

标签: git version-control

我确实在我的分支上提交了。

我意外地在其中添加了.tar.gz个文件,我想忽略它。

然后我做了这个

git reset --soft HEAD^

现在我的提交已经不见了

  1. 修改过的文件
  2. 但未跟踪的文件现在显示为新文件
  3. 我如何回到新文件作为未标记文件的位置

3 个答案:

答案 0 :(得分:1)

git reset --soft仅移动HEAD,但不会重置索引。

git reset @^会移动HEAD 重置索引,使这些文件再次未被跟踪。

有关&{34; Can you explain what “git reset” does in plain english?"的那些reset选项的更多信息。

另请参阅" Difference between git reset soft, mixed and hard"中的一个很好的例子:你想要的是重置HEAD和索引,而不是工作树。

http://davidzych.com/wp-content/uploads/2014/05/reset-wc-changed-580x136.png


OP user3646965the comments中提出要求:

我已经执行了git reset --soft,我可以git reset @^还是会再回复一次?

然后你可以只对文件进行重置(不是HEAD,它已经引用了正确的提交)

cd /path/to/folder/containing/tar.gz_files
git reset -- *.tar.gz

请注意git命令与文件之间的 double-dash (--)

答案 1 :(得分:0)

您实际上无法通过git重置删除文件,这意味着如果您在最近的提交中添加了新文件,即使您执行git reset --hard HEAD~1,也会添加新文件您的上一次提交不会被删除。这是git中必不可少的必要预防措施。如果,希望将您的目录恢复到HEAD~1 git意外删除不打算删除的未跟踪文件,该怎么办?

您可以git reset --hard HEAD~1恢复现有文件的状态。但是,如果您在最近的提交中添加了新文件,则必须自行删除。

答案 2 :(得分:0)

git reset filename会将filename的状态重置为当前提交的状态 - 即,它将取消暂存文件。