关于git回退代码的注意事项

295 阅读2分钟

概述

最近项目中出现了代码提交错误的一些问题,主要包含的细节问题例如:不小心将本地不需要的测试文件和配置文件上传到远程仓库,导致别人更新代码之后,出现本地项目出现一些稀奇古怪的问题,还有就是可能当次提交需要不完整,需要撤回提交,合并本地提交等等情况,总结下关于代码历史回退的一些注意事项。

步骤

命名行

使用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工具操作如下:

  1. 点击历史节点,重置到历史节点,选择硬合并;
  2. 点击当前节点,重置到当前节点,选择软合并;
  • 注意:
  1. 软合并:重置历史提交到当前节点,保留本地commit信息
  2. 混合合并:重置历史提交到当前节点,不保留本地commit信息
  3. 强行合并:丢弃当前所有更改,直接回退到当前节点 image.png