发布功能分支以在git中定期预览

时间:2011-10-10 15:17:01

标签: git preview feature-branch

我正在尝试了解偶尔将功能分支发布到git预览分支的最佳方法。这是我的设置:

  1. 客户要求提供功能。
  2. 我开发初始功能并发布到预览/测试网站。
  3. 客户提供反馈。
  4. 我做了更多更改。
  5. 转到第3步。
  6. 客户端可以使用功能
  7. 将Rebase功能转换为单个提交到生产站点。
  8. 请注意,可以同时开发多个不同的功能,并且只有一个“预览”网站,客户端可以在开发时看到所有这些功能。我目前的git工作流程。

    git checkout -b new_feature
    ...hack hack hack...
    git add .
    git commit -m "WIP"
    git checkout preview
    git merge new_feature
    ... feedback and another feature got approved and merged with master ...
    git checkout new_feature
    git merge master
    ... hack hack hack...
    git add .
    git commit -m "WIP"
    git checkout preview
    git merge new_feature
    ... client approves work for release ....
    git checkout new_feature
    git rebase -i master
    ... squash all commits except the first which I reword with a good description...
    git checkout master
    git merge new_feature
    git branch -d new_feature
    git checkout preview
    git merge master
    git checkout master
    

    所以最终的结果是:

    1. 我能够在它自己的隔离分支中开发该功能并在生产时进行控制。它也在生产中卷起来作为一个很好的整洁提交。
    2. 客户可以在开发功能时查看该功能并提供反馈。他们还可以看到该功能以及我同时开发的其他功能。
    3. “预览”分支变得有点乱,因为它获得了“WIP”提交和最终的重新提交。但我不介意那么多,因为它只是用于客户端预览,我可以定期删除分支,如果需要,可以从master重新创建。
    4. 我唯一的问题是我似乎得到的冲突超出了我的预期。我认为这是因为staging正在获得开发提交和最终提交。我也想知道是否有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

您的工作流程似乎很好,但我不想在与master合并之前压缩功能分支中的所有提交。

在我看来,这并没有增加任何价值,并且您丢失了有关该功能发展的潜在重要信息。

合并时,我使用git merge --no-ff new_feature。这保留了有关功能分支存在的信息,以便您一眼就知道哪些提交进入每个功能:

git merge --no-ff

图片来源 - A successful Git branching model