我在我的分支上做过提交。我怎样才能完全撤销刚刚完成的git commit
我无意中在其中添加了.tar.gz
文件,我想忽略它。
然后我做了这个
git reset --soft HEAD^
现在我提交不见了
- 修改的文件,因为它是
- 但现在未跟踪文件被显示为新的文件
我该如何回到状态新文件的位置s来作为未撇去的文件
我在我的分支上做过提交。我怎样才能完全撤销刚刚完成的git commit
我无意中在其中添加了.tar.gz
文件,我想忽略它。
然后我做了这个
git reset --soft HEAD^
现在我提交不见了
我该如何回到状态新文件的位置s来作为未撇去的文件
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和索引,而不是工作树。
的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的命令和文件之间。
我已经执行'git reset --soft'我可以做' git reset @ ^'或者它会返回一个提交 – user2134226
@ user3646965我编辑了答案以解决您的评论。 – VonC
谢谢,但我有许多subdirs tar文件不是一个文件夹。将工作,如果在根文件夹中执行 – user2134226
你实际上不能通过git reset删除文件,这意味着如果你在最近的提交中添加了新文件,即使你这样做了,git reset --hard HEAD~1
,上次提交时添加的文件也不会删除。这是git中必不可少的必要措施。如果希望将目录恢复到HEAD~1
git意外删除了未被跟踪的文件,这些文件不是被删除的?
您可以使用git reset --hard HEAD~1
来恢复现有文件的状态。但是如果你在最新的提交中添加了新文件,你必须自己删除它。
git reset filename
会将filename
的状态重置为当前提交时的任何状态 - 即它将取消文件的暂存。
[git reset - 混合, - 软件和 - 硬件有什么区别?](http://stackoverflow.com/questions/3528245/whats-the-difference-between-git-reset-mixed-soft-and-hard) –