热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

Git提交过程中修改某次错误提交,或是修改bug的方法

应用场景Git提交过程中不一定每次都是没有问题的,有可能在之前的提交中要修改某次错误提交或是修改bug的,比如:branch_baseA->B->CC->

应用场景

Git提交过程中不一定每次都是没有问题的,有可能在之前的提交中要修改某次错误提交或是修改bug的,比如:

branch_base  A->B->CC->D->E->F

其中如果想将“CC”的提交修改为 “C”而且对“CC”的修改对后面的提交都没有影响,这种情况下就可以使用该方法。

方案思路
branch_base   A->B->CC->D->E->F
branch_temp   A->B->CC->D->E->F

第1步:将“branch_base”分支复制一个临时保存分支 “branch_temp”,用来保存当前版本信息。

命令:

git checkout -b branch_temp

commit log:

1cbdd1f HEAD@{9}: commit: F
4d65a3e HEAD@{10}: commit: E
76fcc45 HEAD@{11}: commit: D
474c2eb HEAD@{12}: commit: CC
42bb6ff HEAD@{13}: commit: B
ab22fab HEAD@{14}: commit: A

第2步:将“branch_base”分支版本回退到B的位置,并与远程分支同步

branch_base   A->B

命令:

查看commit日志 git reflog


选择回退到B位置 42bb6ff

git reset --hard 42bb6ff

与远程库同步

--force 强制提交参数,要确认对后面无影响在执行
git push origin HEAD --force

远程库里面回退到已经回退到B

第3步:本地修改,生成新的C
b1 A->B->C

命令:

git add .
git commit -m 'C'
git push origin branch_temp

4步:
branch_temp  A->B->CC->D->E->F
cherry-pick D,E,F到branch_base上面
branch_base   A->B->C

cherry-pick 批量commit 相关命令:
Git从1.7.2版本开始支持批量cherry-pick,就是一次可以cherry-pick一个区间的commit。

git cherry-pick <start-commit-id>..<end-commit-id>
或
git cherry-pick <start-commit-id>^..<end-commit-id>

前者表示把到之间(左开右闭,不包含start-commit-id)的提交cherry-pick到当前分支;
后者表示把到之间(闭区间,包含start-commit-id)的提交cherry-pick到当前分支。
其中,到只需要commit-id的前6位即可,并且在时间上必须早于

执行命令:

git checkout branch_base

git cherry-pick 76fcc45^..1cbdd1f

显示:

查看本地log

git log

commit f146763a8f8b53bb4e68f60a83291c6eb278e59f
Author: xxx @126.com>
Date:   Tue Dec 26 13:49:37 2017 +0800

    F

commit bf800f94227604dc463efa0b65c391a0daa16dc5
Author: xxx @126.com>
Date:   Tue Dec 26 13:47:55 2017 +0800

    E

commit 1aa9146b4d1281ab087f8bacf4f94e1d0a8ee8a8
Author: xxx @126.com>
Date:   Tue Dec 26 13:47:23 2017 +0800

    D

commit 59bb269511030fb4288f38c4f3a156c9a36084ad
Author: xxx @126.com>
Date:   Tue Dec 26 14:25:55 2017 +0800

    C

commit 42bb6ff3fcaddcac8863e2776bc4f48b8416fda5
Author: xxx @126.com>
Date:   Tue Dec 26 13:46:11 2017 +0800

    B

commit ab22fab784fca451f796fec4fab4f3687b7d5536
Author: xxx @126.com>
Date:   Tue Dec 26 13:45:44 2017 +0800

    A

后面的commit已经过来了

第5步:
提交到远程分支即可


推荐阅读
  • 今天我在操作Git时遇到了一个问题,即我的仓库进入了分离的HEAD状态,这与之前讨论过的‘即使本地有更改,git push仍显示所有内容最新’的问题类似。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文介绍了如何在不同操作系统上安装Git,以及一些基本和高级的Git操作,包括项目初始化、文件状态检查、版本控制、分支管理、标签处理、版本回退等,并简要提及了开源许可协议的选择。 ... [详细]
  • VSCode与Gitee集成:项目提交的高效实践
    本文介绍如何利用VSCode内置的Git工具将项目提交到Gitee,简化Git命令的使用,提升代码管理效率。同时分享一些常见的踩坑经验和解决方案。 ... [详细]
  • 假设您当前位于主分支(版本C4),但发现某些功能已损坏,而这些功能在之前的版本C1时还能正常工作。如何将从C1到C4的所有提交复制到一个新的特性分支中,同时将主分支回滚至C1,以便能够安全地进行版本控制和持续集成部署? ... [详细]
  • 本文总结了多个常用的 Git 命令,包括分支管理、代码提交、远程仓库同步等,旨在帮助开发者高效利用 Git 进行版本控制。 ... [详细]
  • Git SSH配置及远程仓库操作指南
    本文介绍了如何配置Git环境,包括设置用户信息、生成和添加SSH密钥,并详细说明了如何通过SSH连接到远程仓库进行版本控制操作。 ... [详细]
  • 本文详细解析了在使用Git进行代码推送时常见的两个错误——'fetch first'和'non-fast-forward',并提供了有效的解决方案。通过理解这些错误背后的原因,开发者可以更加高效地管理代码版本。 ... [详细]
  • 本文总结了在多人协作开发环境中使用 Git 时常见的问题及其解决方案,包括错误合并分支的处理、使用 SourceTree 查找问题提交、Git 自动生成的提交信息解释、删除远程仓库文件夹而不删除本地文件的方法、合并冲突时的注意事项以及如何将多个提交合并为一个。 ... [详细]
  • 本文介绍了在使用 `git push origin --delete ` 命令删除远程分支后,本地 `git branch -a` 仍显示已删除分支的问题,并提供了详细的解决方案。 ... [详细]
  • 科研单位信息系统中的DevOps实践与优化
    本文探讨了某科研单位通过引入云原生平台实现DevOps开发和运维一体化,显著提升了项目交付效率和产品质量。详细介绍了如何在实际项目中应用DevOps理念,解决了传统开发模式下的诸多痛点。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • 本文详细介绍如何在Android模拟器上安装TaintDroid的过程,包括解决源代码链接失效及服务器文件变动等问题,旨在帮助后续用户避免不必要的麻烦。 ... [详细]
  • 深入理解Git与GitHub:分支管理与冲突解决
    本文详细探讨了Git中的分支管理技术,包括如何创建、切换和合并分支,以及如何有效解决分支合并时可能遇到的冲突。同时,文章还介绍了Git的基本原理,如哈希算法的应用和文件管理机制。 ... [详细]
author-avatar
米蘭王妃级_608
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有