git 回退代码到指定commit,并新增一个包含回退代码记录的提交

回退代码到指定commit,并新增一个包含回退代码记录的提交

案例:新代码已经提交到了branchA,临时需要紧急修复线上bug,但branchA分支代码还不能发布。需要做一次回退,并保留记录方便后续操作。

  • 最新提交为 e1779c26e89231098a2e183e5795a4095ae22ac1

  • 需要将代码回退到 041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb

  • 并生成一条新的提交包含回退的内容

操作步骤:

git checkout 041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb # 回到历史提交:041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb
git reset --mixed branchA # 把历史带到HEAD
git checkout branchA # 签出HEAD
git add . # 添加修改
git commit # 把041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb和HEAD的 revert diff 提交
git push origin branchA # 推送代码

最终效果:

  • 新增一个提交:f108be2e84e198c235c87d3a652f1ce713040669,包含了回退的内容

过程记叙

  • 回到历史提交 git checkout 041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb
注意:正在切换到 '041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb'。

您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以在切换
回一个分支时,丢弃在此状态下所做的提交而不对分支造成影响。

如果您想要通过创建分支来保留在此状态下所做的提交,您可以通过在 switch 命令
中添加参数 -c 来实现(现在或稍后)。例如:

  git switch -c <新分支名>

或者撤销此操作:

  git switch -

通过将配置变量 advice.detachedHead 设置为 false 来关闭此建议

HEAD 目前位于 041ee07df hackathon today 3 api develop
  • 把历史带到HEAD git reset --mixed branchA
重置后取消暂存的变更:
打印出变更文件列表
  • 签出HEAD git checkout branchA
切换回目标分支, 通过 git status 可以看出文件差异列表
  • 操作代码提交
git add . # 添加修改
git commit -m 'revert 某版本' # 把041ee07dfa31d7ddaebb4c781aa7bbef99ced2fb和HEAD的 revert diff 提交
git push origin branchA # 推送代码
  • 查看结果 git log
commit f108be2e84e198c235c87d3a652f1ce713040669 (HEAD -> branchA, origin/branchA)
Author: echo <449211678@qq.com>
Date:   Thu Jan 02 17:02:36 2021 +0800

    revert 某版本

加塞做完如何恢复

假设加塞完成后最新提交为 a29b52579fc417c2ac0f514c0f9d89f81b218392
找到 上一次回滚前的id: e1779c26e89231098a2e183e5795a4095ae22ac1

git checkout e1779c26e89231098a2e183e5795a4095ae22ac1 # 回到历史提交:e1779c26e89231098a2e183e5795a4095ae22ac1
git reset --mixed branchA # 把历史带到HEAD
git checkout branchA # 签出HEAD
git add . # 添加修改
git commit -m 'revert new code' # 把e1779c26e89231098a2e183e5795a4095ae22ac1和HEAD的 revert diff 提交
git push origin branchA # 推送代码
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 回退代码,分两种情况, 1.多次提交已经,提交到服务器; 2.本地多次提交,没有推送到远程服务器; 1.第一种情况...
    pengxiaochao阅读 1,193评论 0 1
  • 1、撤销操作 一来就是一张大图,如果不太了解git的人会有点蒙,下面简单解释一下(都是我个人的理解,如果不妥还请指...
    Sunny旋律阅读 22,906评论 7 39
  • 其他命令 git pull用法: git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并...
    yichen_china阅读 2,504评论 0 5
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,754评论 0 5
  • 昨天,在回家的路上,坐在车里悠哉悠哉地看着三毛的《撒哈拉沙漠的故事》,我被里面的内容深深吸引住了,尽管上学时...
    夜阑晓语阅读 3,836评论 2 9