1,问题描述
在利用git实现多人运动(指尖运动)的时候,我们难免会出现错误提交,这个时候我们肯定不想手动把代码改回来,我们可以利用git提供的两种解决办法:回退(reset)、反做(revert)
2,解决办法
方法一:git reset(回退)
原理:git reset的作用是修改HEAD的位置,将head指针指向之前存在的某个版本 适用场景:如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不想要了,就可以用这种方法 具体操作:

git reset --hard a79cc00fe990f58edec253a6a35d5f7be6b37a2d



| 名称 | 用途 |
|---|---|
| HEAD | 上一次提交的快照,下一次提交的父节点 |
| INDEX | 预期的下一次提交的快照,可以理解为暂存区 |
| WORKING Directory | 工作目录 |
我们正常修改代码时在working directory中进行的,然后用git add将工作区文件添加到暂存区,git commit 提交文件到我们的分支,所以在git reset [--soft | --mixed | --hard] []命令中,
| 参数 | 用途 |
|---|---|
| --soft | 只更改head指针的指向,不改变暂存区和工作区 |
| --mixed(默认参数) | 更改head指针的指向,更改暂存区 |
| --hard | 更改head指针的指向,更改暂存区,更改工作区 |
方法二:git revert (反做)
原理: git revert的作用是创建一个新的commit,以达到撤销该版本的修改的目的,比如我们有三个commit(commit1,commit2,commit3),顺序是commit1 -> commit2 -> commit3,突然我们发现commit2有非常大的bug问题,需要紧急撤销掉commit2的内容, 但是不能影响后续的commit3的提交,这个时候我们就可以使用revert命令来满足我们的需求。

案例:


git revert -n 3b5fd40f90e4d85acabd569a048d4501b51d08cc




