2014-06-07 75 views
1

我在我的分支上做过提交。我怎样才能完全撤销刚刚完成的git commit

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

然后我做了这个

git reset --soft HEAD^

现在我提交不见了

  1. 修改的文件,因为它是
  2. 但现在未跟踪文件被显示为新的文件

我该如何回到状态新文件的位置s来作为未撇去的文件

+0

[git reset - 混合, - 软件和 - 硬件有什么区别?](http://stackoverflow.com/questions/3528245/whats-the-difference-between-git-reset-mixed-soft-and-hard) –

回答

1

A git reset --soft只移动HEAD,但不重置索引。

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

更多关于这些reset选项在“Can you explain what “git reset” does in plain english?”。

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

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


OP user3646965要求在the comments

我已经执行git reset --soft,我可以做git reset @^否则就会回到一个更承诺?

然后你就可以做到只对文件复位(不HEAD,它已经引用正确的提交)

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

注意double-dash (--) git的命令和文件之间。

+0

我已经执行'git reset --soft'我可以做' git reset @ ^'或者它会返回一个提交 – user2134226

+0

@ user3646965我编辑了答案以解决您的评论。 – VonC

+0

谢谢,但我有许多subdirs tar文件不是一个文件夹。将工作,如果在根文件夹中执行 – user2134226

0

你实际上不能通过git reset删除文件,这意味着如果你在最近的提交中添加了新文件,即使你这样做了,git reset --hard HEAD~1,上次提交时添加的文件也不会删除。这是git中必不可少的必要措施。如果希望将目录恢复到HEAD~1 git意外删除了未被跟踪的文件,这些文件不是被删除的

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

0

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

相关问题