Git合并了多个分支

时间:2013-04-14 11:22:23

标签: git

我有以下分支:

master
featureA
featureB

在多个git存储库上。同时在所有三个分支上进行开发。我需要将 featureA 合并到 featureB ,最后将 featureB 合并到 master 中。目前我这样做:

切换到 featureB 并从 featureA 合并。切换到并从 featureB 合并。这个过程涉及2个开关,因为我需要在大约7个存储库中完成它需要一些时间。

使用git有更好的方法吗?

6 个答案:

答案 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)

尝试运行此命令:

  • git checkout master
  • git merge featureA featureB

您可以一步合并所需的所有分支。只需创建一个合并链:

  • git merge a b c d e

将在当前分支中合并分支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 或查看如何mergecombine 两个存储库。