如果你只想抛弃它,而且你正处于主分支上:
git reset --hard HEAD^
这个命令将会重置你主分支的HEAD指针到上一个提交。 (你也可以用"HEAD~1",它和HEAD^意思相同)。更普遍的情况是,你也可以将你的主分支重置为与服务器相同:
git reset --hard origin/master
无论 master 分支的状态如何(即比 origin 提交前 5 个提交,或者比它落后 30 个提交),这都可以工作。这些命令中的
--hard
选项意味着你的工作树中的文件与分支头一起被重置。
额外提示
如果你处于类似的情况,实际上想要保留更改,你总是可以执行以下操作:
git fetch # This grabs changes from the server without merging them
git rebase origin
这将会在服务器上最新的更改之上,重新应用您在master分支上的所有操作。
另一个选择是在master分支上为您的工作创建一个主题分支:
git checkout -b newfeature
然后您可以切换回主分支(git checkout master),并使用我给出的第一个命令将主分支回滚到上一个提交。请记住,分支实际上只是存储在您的代码库中的提交的方便名称。例如,master
只是该分支上最新提交的引用。您可以随意移动这些引用,并且随着您在Git中变得更加高级,您会发现自己经常这样做。
我还建议您养成在操作分支时运行gitk --all
的习惯,以便您可以直观地查看您正在进行的操作。当我刚开始使用Git时,我经常运行此命令。我现在仍然这样做...