0%

Git回滚

将欲取之,必故与之。—— 春秋时期·老子 《道德经》

一、reset

  1. 作用:修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本

二、revert

  1. git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。

    比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。

  2. 作用

    通过反做创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本而不是目标版本

  3. 实现

    • git revert -n commit-id
    • git commit -m 版本名
    • git push

三、各种恢复

  1. 未add

    • 撤销某个文件git checkout -- filename
    • 撤销所有修改git checkout .
      • 放弃掉所有还没有加入到缓存区的修改:内容修改与整个文件删除
      • 不会删除刚新建的文件
  2. 已add

    • 撤销某个文件git reset HEAD filename
    • 撤销所有修改git reset HEAD .
      • 用来清除git对于文件修改的缓存,相当于撤销git add命令
      • 继续撤销则参看未add情况
  3. 已commit

    • 撤销到上一个状态git reset --hard HEAD^
    • 撤销到任一个状态git reset --hard commit_id
    • 强推git push -f