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

时间:2011-02-22 18:21:06

标签: git git-branch

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

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

我有两个问题:

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

提前致谢!

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分: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^

并且您的索引与您提交之前的方式相同。然后只需切换到另一个分支并在那里提交。

答案 2 :(得分:0)

  

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