【问题标题】:Git, What is the recommended applying bug changes in a older commitGit,建议在较旧的提交中应用错误更改
【发布时间】:2022-11-01 12:15:06
【问题描述】:

我有一个具有以下结构的代码公共存储库,新功能是通过从 master 断开一个新分支并将其合并回来来实现的。

(错误修正)
      |
      ü
     /          (掌握)
    / |
A--B--C--D--E...J--K
   |
 (生产)

假设生产指向(B)的提交中有一个错误。

  1. 在 Git 中将错误修复应用到生产环境的推荐/最佳方法是什么?
  2. 是否可以将 bugfix(U) 应用到以后的功能/提交(C、D、E 等),如果可以,推荐的方法是什么?
    (掌握)
                                  |
    A---B---C'---D'---E' ... J'---K'
        |
    (生产)
    1. 是否可以让提交 C 指向 U ?
    (错误修正)(主)
            | |
    A---B---U---C---D---E ... J---K
        |
    (生产)

    如果是这样,我如何将更改应用于 C、D、E ..

    (错误修正)(主)
            | |
    A---B---U---C'---D'---E' ... J'---K'
        |
    (生产)

    编辑

    1. 澄清问题
      • 我不想将 (U) 合并到 master,可以说这是因为我不希望 (K) 投入生产
      • 我会将生产从 C、D、E... 转移到 K,而不是直接转移到 K

【问题讨论】:

  • 将它应用到 master 的最简单方法是在 master 之上挑选它(即它将在​​ K 之后存在)。您是否有特定的原因不想这样做?你需要D本身存在吗错误修复或者如果master 上的最新提交有修复就足够了吗?虽然可以按照您的建议进行操作,但需要重写 master 的历史记录,这是一个非常糟糕的主意,尤其是对于公共存储库。

标签: git


【解决方案1】:

我强烈推荐使用在线 git playground 来模拟你的过程,这些模拟器包括:https://git-school.github.io/visualizing-git/#free(免责声明:我不是这个网站的开发者)

可视化演示:

首先,我认为这些事情只有在分支机构管理不善的情况下才会发生。

如果您不希望 K 投入生产,为什么要将 K 合并/提交到 master 分支。

为了解决这个问题,你可以

  1. 结帐并创建一个新分支(dev),就像当前的master 分支一样
  2. 返回主分支,并在B 上重置头部
  3. 樱桃采摘Umaster 分支
  4. 将新的master 合并/重新设置为dev 分支。
  5. 最后,它可能看起来像:
         (bugfix, master)
            |
    A---B---U
        |
    (production)
    
                              (possible merge request commit, dev)
                                  |
    A---B---C---D---E ... J---K---L
        |
    (production)
    

【讨论】:

    猜你喜欢
    • 2014-07-12
    • 2018-12-30
    • 2021-02-06
    • 2021-02-15
    • 1970-01-01
    • 2010-12-25
    • 2020-07-30
    • 2011-05-23
    • 2010-10-02
    相关资源
    最近更新 更多