多分支场景中的git rebase

时间:2011-12-01 15:53:04

标签: git-rebase

我的情况是,我有一个发布候选分支,用于我们当前“冻结”的候选版本,一个主分支(从发布候选者分支)用于最新的稳定工作,以及一个主题分支(从主分支)因为我正在努力的一点精子。 Master目前与候选版本处于相同的提交状态。

如果候选发布版向前推进了一些提交,那么将master发布到发布版本和主题发布版本与master版本之间是否存在任何功能差异? refs是否会改变,如果有的话,是否有理由偏好另一个?

我应该澄清这个回购是针对我自己的本地源代码控制 - 我们的团队使用不同的SCM,所以我不必担心为其他任何人搞砸事情 - 我是唯一一个承诺过的人这个回购。

2 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解你的问题,但通常是

git checkout a; git rebase c; git checkout b; git rebase c;

会生成这样的树:

--c----a
  +----b

,而

git checkout a; git rebase c; git checkout b; git rebase a;

会生成这样的树:

--c----a----b

我的建议是:试着想象一下你想要的结果树的样子,并阅读git-rebase手册页上的例子。

答案 1 :(得分:1)

我们有3个阶段(相应的分支)

  1. 测试(主),不太敏感的分支
  2. 分期(分期),适度敏感的分支
  3. 生产(生产),最敏感的分支
  4. 我们还为每个实施的功能(最不敏感的分支)设置了单独的分支机构
  5. 以下是我们如何解决合并与rebase

    的问题
    1. 所有分支(主,分段,功能)都是从生产中重新定位的
    2. 功能分支始终合并到必需的阶段
    3. 只有当代码在较低敏感阶段稳定时,才会将功能分支合并到更高敏感阶段
    4. 步骤是:

      (保持生产副本最新)

      git checkout production
      git pull --rebase
      

      (生产时总是使用rebase功能分支)

      git checkout feature-branch
      git pull --rebase
      git rebase production
      

      (总是在生产中使用rebase测试分支,为开发人员测试合并功能分支)

      git checkout master
      git pull --rebase
      git rebase production
      git merge feature-branch
      

      (当开发人员测试成功时,总是在生产时使用登台分支,合并功能分支以供用户接受)

      git checkout staging
      git pull --rebase
      git rebase production
      git merge feature-branch
      

      (在用户接受时批准,将功能分支合并到生产中)

      git checkout production
      git pull --rebase
      git merge feature-branch
      

      可能有更多优化步骤来实现这一目标 我们绝对期待听到更好的选择。