Loading

多版本同时维护的 Bug 修复源代码保存方案

问题描述

在日常维护系统的过程中,我们经常需要修复他人提交的 Bug(因为自己写的都是 feature 嘛)。对于单个线上版本的项目,我们可以轻松地创建一个 bug 修复分支,修复完成后再将其合并到主分支即可。

然而,当系统同时存在多个线上版本时,比如 V1.0.1V1.0.2V1.0.3V1.1.0 等,或者需要针对特定版本进行定制开发时,按照原有的分支策略将导致分支数量激增,管理繁琐。

解决方案

经过深入了解问题后,我们发现需要一个更加优雅的方案来处理 bug 修复后的源代码归档工作。

我们提出了一个方案:将变更后的文件打包,并在需要时替换代码仓库中的文件。这样既保存了新文件,又避免了分支的创建。然而,该方案存在两个缺陷:

  1. 文件体积过大:无论修改了多少内容,都需要保存整个文件。
  2. 变更记录不清晰:没有记录具体进行了哪些修改,想要了解变更的内容需要与原文件进行对比。

针对上述缺陷,Git 提供了一个完美的解决方案:

我们可以使用以下命令将暂存区中的变更输出到文件中:

git diff > [patchfile]

通过这个命令,我们可以将变更内容保存到文件中。

但如何将这个文件应用到当前的代码中呢?这就需要使用下面的命令:

git am < [patchfile]

通过这条命令,我们可以将之前保存的差异应用到本地代码,实现了 bug 修复后的源代码还原。

IDEA 图形化操作

虽然前面介绍了如何通过命令行完成该操作,但现在我们通常使用 IDEA 进行开发,可以通过图形化界面完成 patch 的创建。

创建patch

  1. 打开commit,右键点击任一文件,然后选择Create Patch from Local Changes...

  1. 选择需要包含的文件,填写相关信息(这里的信息就是文件名),点击Create Patch...创建patch文件

  1. 确定保存位置,点击ok即可保存

应用patch

  1. 点击Git-Patch-Apply Patch

  2. 选择要应用的patch文件

  3. 选择需要还原的文件,点击OK即可完成

posted @ 2024-05-12 15:51  shimeath  阅读(90)  评论(0)    收藏  举报