我们正在开发两个版本,一个是小版本,一个是大版本,每个版本都有自己的git分支。在创建大版本之前,该功能最初添加到小版本中。后来,我们从小版本中删除了该功能(使用revert提交),因为我们决定在大版本中引入该功能。
所以现在我们的情况是,如果我们将从小版本合并的更改合并到大版本中,它将包括revert提交,在大版本中这是没有意义的。
我考虑的一个选项是在revert提交后使用cherry-pick处理小分支中的提交,但这样做的缺点是基于小分支的任何分支都无法与大分支合并。尽管如此,它具有更准确的历史记录,因为不包括revert提交。
另一个选择是将整个小分支合并到大分支中,然后“忽略”revert更改。通过“忽略”,我的意思是在进行合并时手动还原被还原的更改。从git的角度来看,这更好地保留了历史记录,但可能需要在合并期间进行一些解纷。
通常,我们只在主要分支中使用合并,并且仅使用cherry-pick来调整修复最新代码之前的内容。因此,我更倾向于选择第二个选项,但我想在这里了解是否这是处理这种情况的正确方式,或者是否我遗漏了什么。
所以现在我们的情况是,如果我们将从小版本合并的更改合并到大版本中,它将包括revert提交,在大版本中这是没有意义的。
我考虑的一个选项是在revert提交后使用cherry-pick处理小分支中的提交,但这样做的缺点是基于小分支的任何分支都无法与大分支合并。尽管如此,它具有更准确的历史记录,因为不包括revert提交。
另一个选择是将整个小分支合并到大分支中,然后“忽略”revert更改。通过“忽略”,我的意思是在进行合并时手动还原被还原的更改。从git的角度来看,这更好地保留了历史记录,但可能需要在合并期间进行一些解纷。
通常,我们只在主要分支中使用合并,并且仅使用cherry-pick来调整修复最新代码之前的内容。因此,我更倾向于选择第二个选项,但我想在这里了解是否这是处理这种情况的正确方式,或者是否我遗漏了什么。
* (major)
| * (minor)
* | ...
| * revert feature on minor
* | major: unrelated commit
| * minor: unrelated commit
* |
|/
* common ancestor
|
* add feature to main branch