• Git修复已发布版本的 Bug


    1. Git - 修复已发布版本的 Bug
    有时候在项目进行了一段时间、发布了几个版本(Release)后,突然发现先前的某个年代久远的 Release 存在 Bug 需要修复。如何做到仅仅修改那个出 Bug 的 Release 的代码,而不影响其之后的所有的 Release 以及当前的进度?

    解决步骤

    假设项目目前最新的 Release 版本是 v0.4.2,正在进行 v0.5.0 的开发,而出 Bug 的版本是 v0.1.1。
    回退到出 Bug 的版本
    方法1:
    首先,查看v0.1.1版本的详细信息:
    git show v0.1.1
    得到以下输出:
    commit a83516d0fb5da5fd5ad749733a160219b5a5ceac (tag: v0.1.1)
    Author: Alfred Liu <xx@163.com>
    其中a83516d0fb5da5fd5ad749733a160219b5a5ceac就是版本发布时的 Commit ID。回退到v0.1.1:
    git reset --hard a83516d0fb5da5fd5ad749733a160219b5a5ceac
    此时查看目录,会发现所有源代码都已经回退到了当时的版本。
    新建 fixbug分支
    git checkout -b fixbug
    建好bugfix分枝后,需要将原来的分枝(我这里是master分枝)前进到最新版本(否则它就一直停留在v0.1.1了)。
    切换到 master 分枝
    git checkout master
    查看最新版本对应的 Commit ID
    git reflog
    前进到最新版本
    git reset --hard 1523898
    此时你会发现,master分枝为当前最新进度,fixbug分枝为出 Bug 的版本。
    方法2:
    git checkout -b 新分支名称 版本号(v0.1.1)

    修改 Bug

    接下来就是切换到 fixbug 分支:
    git checkout fixbug

    修改完 Bug 后,正常git add&git commit即可,并将fixbug分枝推送到远程 GitHub:

    git add <file>

    git commit -m "Fix bugs

    git push origin fixbug

    重打 Tag

    将改好 Bug 的代码重新打上v0.1.1的 tag。这里需要注意的是,默认情况下 git 会给v0.1.1附上一个当前的时间戳,从而会出现v0.1.1的发布时间比v0.4.2晚的情况,GitHub 的 Release 页面则会认为v0.1.1是最新的版本。

    因此我们需要自行“伪造”一个提交日期,即为原先v0.1.1的提交日期即可:

    GIT_COMMITTER_DATE="2017-10-14 23:27" git tag -f v0.1.1 -m "The V0.1.1 Release"

    将修改后的 tag 推送到远程 GitHub(强制更新):

    git push -f origin --tags

    Merge

    最后需要将fixbug分枝归并到master分枝:

    git checkout master

    git merge bugfix --allow-unrelated-histories

    此时肯定会有很多冲突出现,打开某个有冲突的文件,可以看到类似情况:

    <<<<<<< HEAD

    code in master branch

    =======

    code in fixbug branch

    >>>>>>> fixbug

    <<<<<<< HEAD 与 ======= 之间是当前分支的代码,======= 与 >>>>>>> fixbug 之间是待合并分枝的代码。按照实
    际需求修改即可,最后一定要删除这些标记。

    修改完成后正常 git add & git commit 即可。

    清理

    后续的一些清理工作即删除临时的fixbug分支:

    删除本地 fixbug 分支

    git branch -d fixbug

    删除远程 fixbug 分支

    git push --delete origin fixbug

    老版本的Bug被成功修复,当前版本的进度丝毫不受影响`

  • 相关阅读:
    小程序数据库 用正则查询字符串字段/数组字段
    一键禁用Windows多余?服务
    Switch 10.1.0 无法启动软件请在home菜单中再试一次 解决方法
    算法记录
    LeetCode——面试题 10.01. 合并排序的数组
    LeetCode——98. 验证二叉搜索树
    LeetCode——55. 跳跃游戏
    LeetCode——92. 反转链表 II
    LeetCode——206. 反转链表
    LeetCode——225. 用队列实现栈
  • 原文地址:https://www.cnblogs.com/Xingtxx/p/16390661.html
Copyright © 2020-2023  润新知