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

Car*_*arl 14 git merge branch

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

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

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

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

Fre*_*abe 7

如果

  1. 要将最新主提交合并到的分支未发布AND
  2. 你希望master中的所有提交都在其他分支中

然后你可以简单地在主人更新后将它们重新加入主人.如果您使用的是Unix shell,这个小脚本可能会有效.它将每个分支重新转换为主分支.

for BRANCH in `ls .git/refs/heads`; do git rebase master $BRANCH; done
Run Code Online (Sandbox Code Playgroud)

  • 极好的!我更喜欢合并而不是变基:```for BRANCH in `ls .git/refs/heads`; 做 git checkout $BRANCH; git合并大师;done``` 在我推送到原点之后:```for BRANCH in `ls .git/refs/heads`; 做 git push origin $BRANCH; 完成了``` (2认同)

Von*_*onC 6

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

  • 建立一个裸仓库,你可以推动你的主分支.
  • 在那个裸仓库上有一个post-receive hook(参见githooks手册页),然后在你想要的每个"功能" 仓库上推送master
  • 每个功能仓库都有一个post-receive hook开始:
    • 在master上的功能分支的rebase(如果你还没有将你的功能分支推到别处那么很好)
    • 或者在功能分支上合并master.

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