我有以下分支:
master
featureA
featureB
在多个git存储库上。同时在所有三个分支上进行开发。我需要将 featureA 合并到 featureB ,最后将 featureB 合并到 master 中。目前我这样做:
切换到 featureB 并从 featureA 合并。切换到主并从 featureB 合并。这个过程涉及2个开关,因为我需要在大约7个存储库中完成它需要一些时间。
使用git有更好的方法吗?
答案 0 :(得分:1)
您需要对7个存储库中的每个存储库执行两个步骤。听起来像编写shell脚本以在每个仓库中为您运行必要的git命令。只要您的回购是分开的,我不认为git本身对您有很大帮助;你也可以考虑通过“子模块”连接它们(虽然我不确定它会在这里有所帮助)。
答案 1 :(得分:1)
这听起来有些异常。如果您有六到七个开发人员都在使用featureA或featureB,那么他们应该已经彼此同步。也就是说,在开发过程中,它们彼此推或拉,或间接通过指定的中央存储库。这是他们在开发功能时如何协同工作。
在这种情况下,唯一剩下的就是:
# your 4 steps
git checkout featureB
git merge featureA
git checkout master
git merge featureB
在此之后,每个开发人员都会拉主人,他们可以删除featureA和featureB,也可以放弃它们。
每个开发人员都会从主人
创建新的功能分支答案 2 :(得分:0)
我推荐的合并顺序如下。
(defun digits(n)
"Transform a positive integer n in array of digits"
(let* ((logn (floor (log n 10)))
(result (make-array (1+ logn) :element-type '(integer 0 9))))
(loop for i downfrom logn to 0
do (setf (values n (aref result i)) (floor n 10)))
result))
通过这种方式,featureA和featureB修改都安全地合并到master。此外,即使事先有任何主修改,也不会发生合并丢失。
但是,顺序很复杂。这就是为什么如果手动操作可能会使操作出错的原因。 似乎有自动化订单的工具,请用Google搜索。
答案 3 :(得分:0)
尝试运行此命令:
您可以一步合并所需的所有分支。只需创建一个合并链:
将在当前分支中合并分支a,b,c,d和e。
如果其中一个主题导致冲突,则合并失败。明显。
答案 4 :(得分:0)
Git本身并没有太多简化多个分支机构合并的方式。为此,我编写了一个名为Cascade的小型CLI。
Casecade-CLI:https://www.npmjs.com/package/cascade-cli
您提到的工作流程似乎非常普遍,烦人,并且可能会非常耗时。 CLI将从主机中拉出每个分支(如果有),合并,然后将每个分支推回到主机(如果有)。它仍处于起步阶段,但我正计划扩展其功能,并希望能解决此重复出现的问题。
用法:
Grade
示例:
SELECT School.name, School.id as sid,
(Select count(*) from Student inner join Grade on
Student.g_id=Grade.id inner join School on
Grade.s_id=School.id where School.id=sid and
Student.height < 170) as under_170,
(Select count(*) from Student inner join Grade on
Student.g_id=Grade.id inner join School on
Grade.s_id=School.id where School.id=sid and Student.height > 180) as over_180
from School
答案 5 :(得分:0)
您可能想要使用自动 shell merging script 或查看如何merge 或 combine 两个存储库。