我正在研究的当前项目,我正在尝试探索一堆通常表现为一堆功能分支的不同想法。我正在处理的功能通常是彼此正交的,所以有时我想合并所有这些功能(或功能的某些子集)并一起测试它们。
到目前为止,我的工作流程是这样的 - 我有分支featureA
,featureB
,featureC
,我将有一个名为featureA_featureB
的分支,然后另一个像featureA_featureB_featureC
featureC
等等。
我有两个问题:
featureA_featureC
的改进,但由于我在git commit -a
分支,我不小心提交到这个分支(我真的需要停止使用{{1}}) 。然后,我必须挑选提交或做一些其他疯狂的事情,以便将提交到正确的地方。提前致谢!
答案 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分支,或者从一个分支到另一个分支应用单独的提交(樱桃选择)。