概述
最近项目中出现了代码提交错误的一些问题,主要包含的细节问题例如:不小心将本地不需要的测试文件和配置文件上传到远程仓库,导致别人更新代码之后,出现本地项目出现一些稀奇古怪的问题,还有就是可能当次提交需要不完整,需要撤回提交,合并本地提交等等情况,总结下关于代码历史回退的一些注意事项。
步骤
命名行
使用git log命令,查看分支提交历史,确认需要回退的版本
使用git reset --hard commit_id命令,进行版本回退
使用git push origin命令,推送至远程分支
例如master上有如下提交记录
42eae13 (HEAD -> master) 第四次修改
97ea0f9 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改
要想回到第三次提交,执行 git reset --hard 97ea0f9,这个时候,git的提交历史变为:
97ea0f9 (HEAD -> master) 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改
可以看到master当前指向97ea0f9这个版本,我们回到了第三次修改。
使用reset命令,Git会把要回退版本之后提交的修改都删除掉。
那如果发现第三次修改有错误,想要恢复第三次修改,却要保留第四次修改呢?
这个时候就可以用revert命令:
git revert -n 97ea0f9
git commit -m "恢复第三次修改"
Git提交历史会变成:
33b8b30 (HEAD -> master) Revert "恢复第三次修改"
42eae13 第四次修改
97ea0f9 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改
可视化工具
对应到可视化工具source tree工具操作如下:
- 点击历史节点,重置到历史节点,选择硬合并;
- 点击当前节点,重置到当前节点,选择软合并;
- 注意:
- 软合并:重置历史提交到当前节点,保留本地commit信息
- 混合合并:重置历史提交到当前节点,不保留本地commit信息
- 强行合并:丢弃当前所有更改,直接回退到当前节点