出于不同的原因,我需要维护一个线性的主分支
我们团队中有多个人,我们想要创建
然而,所有这些工作最终都必须以线性形式转发到
假设
从 `div` 到 `devel` 的每个提交(按拓扑顺序),执行 `git reset --soft` 并将更改提交到 `master` 分支(使用相同的提交信息)。这意味着:
- 在 `div` 之后但在 `devel` 之前的提交被压缩:这些提交可能是从 `foreign` 合并过来的(如果是,则很好),或者是从 `master` 合并过来的(如果是,则实际提交已经在 `master` 中了)。 - 在中间的提交会一个接一个地正确推送到 `master`,除了与 `devel` 平行的分支,它看起来像在每次撤消另一侧的提交(这很丑,但可能无法避免)。
最后,将 `master` 合并回 `devel`,此合并提交成为下一次操作的 `div`。
由于我希望最小化“撤消”/“重做”的数量,因此我将以下限制添加到所选的拓扑顺序中:`devel` 中仅具有一个父级的提交将与 `master` 中的等效提交作为父级。
总的来说,这似乎过于复杂了。是否有内置的方法可以使线性分支跟随非线性分支?否则,我的策略是否有效,或者我漏掉了非常重要的细节?
master
。也就是说,在该分支中的提交不能有超过一个父提交。我们团队中有多个人,我们想要创建
feature
分支一起工作。通常情况下,我们会将自己的个人提交变基到这个feature
分支上,然后在功能准备好时将其合并到我们的devel
分支上。我们还依赖于一个foreign
项目(使用不同的分支,但在这里我们假设它都在一个单独的foreign
分支中,并且有自己的独立来源),我们定期将其合并到我们的devel
分支中。然而,所有这些工作最终都必须以线性形式转发到
master
分支。我们可以将所有这些更改压缩成一个单独的提交master
(使用git reset --soft devel
),然后将master
合并回devel
。然而,我们希望尽可能地保留我们的提交:
- 每个提交消息(包括合并消息)都应该被保留
- 提交之间的拓扑顺序必须被保留
- 从
foreign
分支合并的提交必须被压缩成一个单独的“合并”提交(不幸的是没有父信息) master
、devel
、feature
、foreign
分支必须保持完全向前兼容(因为这是一个共享库)
- 从
devel
创建一个staging
分支 - 将
staging
变基到master
上 - 将新的
staging
合并回devel
中。
foreign
分支是从其来源重新变基而不是压缩- 我必须再次处理来自
devel
的每个冲突,尽管它们已经在我们的许多合并过程中在devel
本身中处理过了
假设
div
是devel
中最新的未合并到master
中的提交(最新的分歧点)。如果master
有新的提交未合并到devel
中,则放弃。也就是说,如果在div
之后在master
中有新的提交,则必须手动将其合并到devel
中。从 `div` 到 `devel` 的每个提交(按拓扑顺序),执行 `git reset --soft` 并将更改提交到 `master` 分支(使用相同的提交信息)。这意味着:
- 在 `div` 之后但在 `devel` 之前的提交被压缩:这些提交可能是从 `foreign` 合并过来的(如果是,则很好),或者是从 `master` 合并过来的(如果是,则实际提交已经在 `master` 中了)。 - 在中间的提交会一个接一个地正确推送到 `master`,除了与 `devel` 平行的分支,它看起来像在每次撤消另一侧的提交(这很丑,但可能无法避免)。
最后,将 `master` 合并回 `devel`,此合并提交成为下一次操作的 `div`。
由于我希望最小化“撤消”/“重做”的数量,因此我将以下限制添加到所选的拓扑顺序中:`devel` 中仅具有一个父级的提交将与 `master` 中的等效提交作为父级。
总的来说,这似乎过于复杂了。是否有内置的方法可以使线性分支跟随非线性分支?否则,我的策略是否有效,或者我漏掉了非常重要的细节?
foreign
分支怎么办?我无法变基它(它不在我的控制之下)。 - Nonyme