Git Discipline:结合多个功能分支,但仍然将它们分开?

问题描述 投票:22回答:3

我正在研究的当前项目,我正在尝试探索一堆通常表现为一堆功能分支的不同想法。我正在处理的功能通常是彼此正交的,所以有时我想合并所有这些功能(或功能的某些子集)并一起测试它们。

到目前为止,我的工作流程是这样的 - 我有分支featureAfeatureBfeatureC,我将有一个名为featureA_featureB的分支,然后另一个像featureA_featureB_featureC等。

我有两个问题:

  • 命名方案非常麻烦,并产生大量的分支混乱
  • 由于我正在使用合并在一起的功能测试分支,因此我倾向于意外地提交组合分支而不是单个分支。所以例如,我想到了featureC的一个改进,但是因为我在featureA_featureC分支,我意外地承诺了这个分支(我真的需要停止使用git commit -a)。然后,我必须挑选提交或做一些其他疯狂的事情,以使提交到正确的地方。
  • 我觉得有更好的方法来实现这个目标......

提前致谢!

git git-branch
3个回答
8
投票

我打算写一个我自己的答案,但后来我找到了这个great answer(和一个很好的问题)。它不会为您提供单一的方法,但仔细阅读后,您应该能够找到适合您情况的工作流程。


4
投票

我有一个共同的分母分支,例如“develop”,我的所有功能分支都将从中分支出来。

develop
|----featureA
|----featureB
|----featureC

然后,一旦你想测试一些东西,只需从功能分支合并到你想要的组合中开发,例如

git checkout develop
git merge featureA featureB
./test.sh

如果您对测试感到满意,请保留提交。如果不这样做

git reset --hard HEAD^

而你又回到了开发合并之前的方式。这样您只需要您的功能分支,您就可以以任何组合进行实验。只要记住,只要你提交了任何东西,你就可以通过检查reflog来恢复到那个状态。

而对于你的git commit -a problems,做

git reset --soft HEAD^

并且你的索引就像你提交之前那样。然后只需切换到另一个分支并在那里提交。


0
投票

在Git中,有几种方法可以使用integrate changes from one branch into another:合并分支,Rebase分支,或者从一个分支到另一个分支应用单独的提交(樱桃选择)。

© www.soinside.com 2019 - 2024. All rights reserved.