我们正在两个版本,一个小和一个主要的,每个都有自己的git
分支。在我们创建主要分支之前,一个功能最初被添加到小分支。之后,该功能从小分支中删除(提交revert
),因为我们决定在主要版本中引入该功能。合并git分支时,有一个恢复,其他不想要
所以,现在我们有一种情况,如果我们将小分支的变化合并到主分支中,它将包含回复提交,这在主分支中是没有意义的。
我考虑过的一个选择是在恢复提交后对次分支提交使用cherry-pick
,但这有一个缺点,即基于次分支的任何分支都不能与主分支合并。 (我们必须继续使用cherry-pick
来处理类似的事情。)虽然它的优点是具有更准确的历史记录,因为不会包含恢复提交。
另一种选择是将所有小分支合并到主分支中,并仅“忽略”还原更改。通过“忽略”,我的意思是在合并时手动还原已恢复的更改。从git的角度来看,这更好地保留了历史记录,但可能意味着在合并过程中会出现一些问题。
通常我们只在主分支中使用合并,而樱桃采摘只是为了在修改最新代码之前将它们合并。所以我的选择是第二种选择,但我想知道这是否是处理这种情况的正确方法,或者是否有我缺少的东西。
编辑:这里是ASCII艺术:-)
* (major)
| * (minor)
* | ...
| * revert feature on minor
* | major: unrelated commit
| * minor: unrelated commit
* |
|/
* common ancestor
|
* add feature to main branch
你的问题是缺少ASCII艺术:)。您是否恢复了仅在小分支上进行的提交或者是在分支或合并到小分支之前在主分支中创建的提交? – Chronial
在将功能添加到次分支之后但在将还原添加到次分支之前,小分支合并到主分支中了吗? –
我不清楚这两个分支上的功能提交是否通用。 –