将欲取之,必故与之。—— 春秋时期·老子 《道德经》
一、reset
- 作用:修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本
二、revert
git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。
比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。
作用
通过反做创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本而不是目标版本
实现
- git revert -n commit-id
- git commit -m 版本名
- git push
三、各种恢复
未add
- 撤销某个文件
git checkout -- filename
- 撤销所有修改
git checkout .
- 放弃掉所有还没有加入到缓存区的修改:内容修改与整个文件删除
- 不会删除刚新建的文件
- 撤销某个文件
已add
- 撤销某个文件
git reset HEAD filename
- 撤销所有修改
git reset HEAD .
- 用来清除
git
对于文件修改的缓存,相当于撤销git add
命令 - 继续撤销则参看未
add
情况
- 用来清除
- 撤销某个文件
已commit
- 撤销到上一个状态
git reset --hard HEAD^
- 撤销到任一个状态
git reset --hard commit_id
- 强推
git push -f
- 撤销到上一个状态