使用Git将master中的更改合并到所有分支中?

时间:2010-02-24 21:32:21

标签: git merge branch

我使用git来维护代码的多个工作副本。我的想法是,我可以检查任何分支,构建并运行它,以查看分支的特征x如何适应代码的当前状态。

Git的主分支是Trunk,其他git分支是我想尝试的功能或事物。因此,我的典型用法是使用最新修补程序更新master,然后将master合并到各个分支中,以便每个分支都保持最新。

这个系统适合我,除了我必须结帐分支,合并主人和冲洗/重复其他分支。鉴于像git这样的版本控制系统,我不认为这种扩展非常好,因为随着时间的推移,我很容易产生很多分支。

我仍然是一个git初学者,所以我怀疑可能有一种git已经存在的机制,我可能会失踪。有吗?如果没有,那么如何对所有分支进行更改以使它们保持最新状态?

3 个答案:

答案 0 :(得分:6)

如果

  1. 要合并最新主提交的分支未发布AND
  2. 您希望master中的所有提交都在其他分支中
  3. 然后你可以在master更新后简单地将它们重新绑定到master上。如果您使用的是Unix shell,这个小脚本可能会有效。它将每个分支重新组合成主。

    for BRANCH in `ls .git/refs/heads`; do git rebase master $BRANCH; done
    

答案 1 :(得分:5)

一种可能性(未经我自己测试)将是:

  • 建立一个可以推送主分支的裸仓库。
  • 在那个裸仓库上有一个后接收挂钩(见githooks man page),然后将主人推送到你想要的每个“功能”仓库上
  • 每个功能仓库都有一个post-receive hook开始:
    • 你的功能分支在主人之上的变化(如果你还没有将你的功能分支推到其他地方那么很好)
    • 或功能分支上的master合并。

您仍然需要访问功能仓库并检查是否由于某些合并冲突而阻止了rebase或merge。

答案 2 :(得分:0)

以下检查每个分支并进行合并:

   for BRANCH in $(ls git/refs/heads);
     do git checkout $BRANCH ; 
     git merge origin/master $BRANCH ; 
   done