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

发布功能分支以在git中定期预览,git,preview,feature-branch,Git,Preview,Feature Branch,我试图了解偶尔将特性分支发布到git预览分支的最佳方法。以下是我的设置: 客户要求提供该功能 我开发初始功能并发布到预览/测试站点 客户提供反馈 我做了更多的改变 转至步骤3几次 客户端是一个很好的功能 将功能重设为推送到生产站点的单个提交 请注意,可以一次开发多个不同的功能,并且只有一个“预览”站点,客户可以在开发这些功能时看到这些功能。我的git工作流程目前正在运行 git checkout -b new_feature ...hack hack hack... git add . git

我试图了解偶尔将特性分支发布到git预览分支的最佳方法。以下是我的设置:

  • 客户要求提供该功能
  • 我开发初始功能并发布到预览/测试站点
  • 客户提供反馈
  • 我做了更多的改变
  • 转至步骤3几次
  • 客户端是一个很好的功能
  • 将功能重设为推送到生产站点的单个提交
  • 请注意,可以一次开发多个不同的功能,并且只有一个“预览”站点,客户可以在开发这些功能时看到这些功能。我的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
    
    因此,最终结果是:

  • 我能够在它自己的独立分支中开发该特性,并在它投入生产时进行控制。它也在生产中作为一个漂亮整洁的提交卷起来
  • 客户可以在我开发该功能时看到它并提供反馈。他们还可以看到该功能以及我同时开发的其他功能
  • “预览”分支变得有点混乱,因为它同时获得“WIP”提交和最终的重定基础提交。但我并不介意,因为这只是为了客户端预览,如果需要,我可以定期删除分支并从master重新创建

  • 我唯一的问题是,我遇到的冲突似乎比我预期的要多。我认为这是因为登台是获得开发提交和最终提交。我还想知道是否有更好的方法来做到这一点?

    您的工作流程似乎很好,只是我不喜欢在与master合并之前挤压来自功能分支的所有提交

    在我看来,这不会增加任何价值,而且您会丢失有关功能演变的潜在重要信息

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


    Image source-

    您的工作流似乎很好,只是我不喜欢在与master合并之前挤压来自功能分支的所有提交

    在我看来,这不会增加任何价值,而且您会丢失有关功能演变的潜在重要信息

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


    图像源-

    切换预览回购,使其位于新功能分支上,怎么样?这样,您就不必一直合并。预览将显示正在开发的几个不同功能。因此,我希望预览是所有正在进行的工作的合并。切换预览repo使其位于新的功能分支上怎么样?这样,您就不必一直合并。预览将显示正在开发的几个不同功能。所以我希望预览是所有正在进行的工作的合并。谢谢你的建议。对我来说,重定基址可以让我放弃很多不重要的东西,并在历史上清楚地看到每个新增功能。对我来说,我宁愿看到------1。实现的功能foo------比:------------1。已启动功能foo 2。功能foo 3的还原部分。在提交4中忘记了文件。删除bug 5。最终完成了功能foo6。忘记了特性foo的X------看起来更清晰易懂。我想对我来说,所有这些小小的提交都只是“正在进行的工作”,并不是很重要。@Eric根据我的经验,当您的一个最终用户决定要重新添加该功能时,像“功能foo的2.还原部分”这样的提交非常有用。不管对你有用什么,都没有一种正确的方法来使用git。谢谢你的建议。对我来说,重定基址可以让我放弃很多不重要的东西,并在历史上清楚地看到每个新增功能。对我来说,我宁愿看到------1。实现的功能foo------比:------------1。已启动功能foo 2。功能foo 3的还原部分。在提交4中忘记了文件。删除bug 5。最终完成了功能foo6。忘记了特性foo的X------看起来更清晰易懂。我想对我来说,所有这些小小的提交都只是“正在进行的工作”,并不是很重要。@Eric根据我的经验,当您的一个最终用户决定要重新添加该功能时,像“功能foo的2.还原部分”这样的提交非常有用。但是,不管对您有用什么,都没有一种正确的方法来使用git。