无尽的后悔药
世上本没有后悔药,但是有了 Git
之后,也就有了后悔药。
在任何一个阶段,你都可能想撤销某些操作,Git
提供了一系列撤销操作的命令,注意,有些撤销操作是不可逆的。
1. 撤销对文件的修改
$ git checkout -- files
注意:--
如果不加 --
则表示切换分支。这个是一个危险命令,除非你确实清楚不想要那个文件了,否则不要使用这个命令。
如果你仍然想保留对那个文件的修改,但是现在仍然需要撤销,使用如下命令:
$ git stash save <files>
此命令表示将修改的文件暂时存储到存档区。等以后可恢复原来的修改。
$ git stash list # 查看已暂时放到存档区的文件
$ git stash pop [<stash>] # 取出最后一个或指定的存档区的改动到工作区,然后从存档区删除
$ git stash apply [<stash>] # 取出最后一个或指定的存档区的改动到工作区,但是不从存档区删除
$ git stash drop [<stash>] # 删除存档区的临时存档
$ git stash clear # 清空存档区的临时存档
2. 撤销暂存的文件
$ git reset HEAD <files...>
3. 修改已提交
对于已提交的内容,如注释信息书写错误或者忘记提交某些文件,但是还想让这些文件在一次提交里面,可使用如下命令。
$ git commit <new_files...> --amend
4. 撤销已提交
$ git reset --soft HEAD^ # 撤销已提交到暂存区域,此时显示未提交状态,修改内容未丢失
$ git reset [--mixed] HEAD^ # 撤销已提交到工作区域,此时显示为暂存状态,修改内容未丢失
$ git reset --hard HEAD^ # 撤销已提交的内容,修改的内容已丢失,慎用此命令
对于已提交的内容,恢复到提交之前的状态。
记住一点,在 Git
中,任何已提交的东西几乎都是可恢复的,可是,任何你未提交的东西丢失后很可能再也找不到了。