我有以下分支:
master
featureA
featureB
在多个 git 存储库上。开发同时发生在所有三个分支上。我需要将featureA合并到featureB中,最后将featureB合并到master中。目前我做:
切换到featureB并从featureA合并。切换到master并从featureB合并。此过程涉及 2 个开关,由于我需要为大约 7 个存储库执行此操作,因此需要一些时间。
有没有更好的方法使用 git 来做到这一点?
我有以下分支:
master
featureA
featureB
在多个 git 存储库上。开发同时发生在所有三个分支上。我需要将featureA合并到featureB中,最后将featureB合并到master中。目前我做:
切换到featureB并从featureA合并。切换到master并从featureB合并。此过程涉及 2 个开关,由于我需要为大约 7 个存储库执行此操作,因此需要一些时间。
有没有更好的方法使用 git 来做到这一点?
这听起来有点不正常。如果您有六七个开发人员都在开发 featureA 或 featureB,那么他们应该已经相互同步了。也就是说,在开发过程中,它们相互推/拉或通过指定的中央存储库间接地推/拉。这就是他们在开发功能时协同工作的方式。
在这种情况下,唯一剩下的是:
# your 4 steps
git checkout featureB
git merge featureA
git checkout master
git merge featureB
在此之后,每个开发人员都拉出 master,他们可以删除 featureA 和 featureB 或者直接放弃它们。
开发继续进行,每个开发人员都从 master 创建新的功能分支
您需要在 7 个存储库中的每一个上执行两个步骤。听起来像是编写 shell 脚本以在每个 repo 中为您运行必要的 git 命令的好案例。只要你的仓库是分开的,我不认为 git 本身对你有什么好处。您还可以考虑通过“子模块”连接它们(尽管我不确定它是否会有所帮助)。
Git 本身并没有太多简化多个分支合并的方式。为此,我编写了一个名为 Cascade 的小型 CLI。
Casecade-CLI:https ://www.npmjs.com/package/cascade-cli
您提到的工作流程似乎非常常见、烦人,并且可能有些耗时。CLI 将从主机中提取每个分支(如果可用)、合并,然后将每个分支推回主机(如果可用)。它仍处于起步阶段,但我计划扩展其功能并希望解决这个反复出现的问题。
用法:
cascade merge <head> <toBranches...>
例子:
cascade merge featureA featureB master
尝试运行此命令:
您可以一步合并所有您想要的分支。只需创建一个合并链:
将合并当前分支中的分支 a、b、c、d 和 e。
如果其中一个主题导致冲突,则合并失败。明显地。
我推荐的合并顺序如下。
//merge master to featureA
git checkout master
git merge featureA
//merge featureA to master
git checkout featureA
git merge master
//merge master to featureB
git checkout master
git merge featureB
//merge featureB to master
git checkout featureB
git checkout master
这样,featureA 和 featureB 的修改都被安全地合并到 master 中。此外,即使事先有任何主修改,也不会发生合并丢失。
但是,顺序很复杂。这就是为什么如果手动操作可能会出错。好像有自动下单的工具,请用谷歌搜索。
您可能想要使用自动shell 合并脚本或查看如何合并或组合两个 repos。