Mik*_*itz 11
这里有两种"破坏性" - 破坏你的git历史的命令和丢弃工作副本中的变化的命令.
丢弃工作树更改的命令:
git resetgit checkout正如其他人所提到的,reflog和git对象不会被立即丢弃的事实的组合(除非你打开自动清理)意味着你通常可以撤消像这样的操作git reset/rebase/merge.
但是,这些命令实际上丢弃了git对象,从而无法撤消:
git gc (默认情况下,此修剪至少2周的无法访问的对象)根据http://blog.reverberate.org/2009/07/30/gits-needs-a-new-interface/
$ git checkout foo.c
Run Code Online (Sandbox Code Playgroud)
...将覆盖你可能不得不foo.c的任何本地修改.