Git将子分支重设为其他子分支

Git将子分支重设为其他子分支,git,merge,branch,rebase,Git,Merge,Branch,Rebase,这可能已经或者可能还没有得到回答,但因为我不知道我想做什么的确切术语,所以很难通过搜索找到它 以下是我当前的git项目布局: master | |-branch-a |-branch-b |-branch-c 我已经意识到,在某些情况下,我对所有三个子分支所做的更改都非常相似,因此它们应该应用于master之上。但是,master是我的“导入分支”,我从外部源导入更新的代码,然后再将其合并到子分支中 因此,我认为最好的方法是从master创建一个子分支,比如说fixes,然后让

这可能已经或者可能还没有得到回答,但因为我不知道我想做什么的确切术语,所以很难通过搜索找到它

以下是我当前的git项目布局:

master
  |
  |-branch-a
  |-branch-b
  |-branch-c

我已经意识到,在某些情况下,我对所有三个子分支所做的更改都非常相似,因此它们应该应用于
master
之上。但是,
master
是我的“导入分支”,我从外部源导入更新的代码,然后再将其合并到子分支中

因此,我认为最好的方法是从
master
创建一个子分支,比如说
fixes
,然后让我的子分支:

master
  |
  |-fixes
      |
      |-branch-a
      |-branch-b
      |-branch-c
一旦我这样做了,我将不得不以某种方式消除现有分支与
fixes
分支中修复的任何代码之间的冲突。但我认为最困难的部分是在不影响回购的情况下,将我的分支重新定位到
fixes
分支

值得注意的是,每个分支都包含需要保持独立于其他分支的代码。基本上是在不同的理念上并行发展。稍后,一个或多个可能会合并到
master
。因此,如果我没有适用于所有子分支的修复,那么
fixes
基本上就是
master
的镜像

我该怎么做呢



编辑:因为我不能在注释中绘制ASCII,这是对的回答

我想我明白你的意思了。我应该像这样调整我的树枝的方向

master (core fixes go here)
  |
  |-upstream
  |
  |-branch-a
  |-branch-b
  |-branch-c

这样我就可以将自己的本地核心补丁应用到
master
上,并使用
上游分支来跟踪上游的更改,根据需要将它们合并到本地分支中?

我会做一些稍微不同的事情;master是您的通用集成工作分支-{a、b、c}是特定的发布分支,您维护一个特定的“上游”分支,从所述上游导入

这样做的好处是,您有一个特定的区域可以不断地将更改折叠到其中,朝着新的版本构建—期望每个分支{a,b,c}都可能是该公共分支点的导数(最接近)

关于管理公共分支,从它的声音来看,你偶尔会进行合并/挑选;这样做效果很好,这种结构使得偶尔对公共区域进行重新基址调整以消除噪音/死区CLs变得很容易,从而将实际上游的历史增量降至最低


不管怎样,我建议你退后一步,试着决定你是否认为你的工作是别人的真正的“主人”(他们会从你身上拉出来),或者你是其他上游的衍生物。如果你是一个衍生工具,我所描述的相当有效;如果你是“大师”,那么你可能会想要一些不同的东西。

请参阅我对上面原始问题的编辑,以回应你的建议答案。假设你不是上游-这类似于内核-你会想要以下分支关系,就“起源”而言:上游->大师,大师->分支-{a,b,c}。通过这一点,你得到了一个自然的变化流;主节点从上游分叉,每个分支从主节点分叉,根据需要折叠变化。