当有正在进行的功能分支时重构 master 的最佳方法?

best way to refactor master when there is an in-progress feature branch?

如果您在 git 功能分支中添加了一个功能,并且中途意识到您的主代码应该重构,您会怎么做?

问题背景:

我正在添加一个通信库 (I2C),它需要获取系统时钟频率才能设置其波特率 (comm.freq)。当我的 USART 库需要系统时钟时,我在库中添加了一个函数来获取它。 (我试图避免不必要的依赖)。使用 I2C 后,我意识到依赖关系对两个库都有意义。

所以我需要向我的 ClockControl 库添加一个函数并重构我的 USART 库。但我不想放弃 I2C 功能的进展。使用 git 执行此操作的正确方法是什么?

你只有两个选择,真的:

选项 1:重构 master 并在其上重新设置 I2C 分支。

如果重构很复杂,此选项可能会非常痛苦,但如果它与您的 I2C 工作重叠有限,则可能相对轻松。

(直接重构master还是在另一个"refactor"特性分支上重构,对本题没有影响)

选项 2:在功能分支上同时进行重构和 I2C 工作。当你最终合并时,主人会得到两者。

这显然是最简单的。它的限制是:

  • 在组合重构+I2C 工作完成并合并回 master 之前,不能在 master 上进行其他并行工作。如果您或其他任何人尝试,他们将与您现在处在同一条船上。

  • 您的提交历史不会有单独的重构和 I2C 提交。