2011-08-31 51 views
0

我在我的git repo中有3个分支:主人,展台发展。对于每个功能,我创建了新的brach,从开发。 功能完成后,我会合并它分支到开发(与- 无-ff选项)。(git)如何将所有修订版本从不存在的分支合并到其他分支中?

例如,我有3个特征(F1F2F3)合并分支开发,以及i除去F1F2F3(或它被创建在另一台机器上,并且开发人员不会将其推入原始回购),合并到开发。 现在我要“放” F1F3站在分支(它有一个以上的在其承诺,我不能使用樱桃采摘)我应该怎么办?

当然,我可以创建cherry-pick脚本进行修订范围合并,但也许,我有一个更好的方法来合并它(通过旧的分支名称,或其他)。

my repo: 
develop   --- 
      /
stand  --- 
     /
master --- 

feature branches: 
      f1 f2 f3 
     /\/\/\ 
develop ---------------- 

i want: f1 f2 f3 
develop ----------------  
stand ----- ------- 

谢谢。

回答

1

如果你没有分支了,幸运的是你使用--no-ff以便它们可以被恢复。看在gitk,找到最后的SHA1提交合并上develop提交之前功能1.然后把它找回来只是做:

git branch f1 SHA1 

然后把它们放在stand,做到:

git rebase --onto stand develop f1 
git checkout stand 
git merge f1 

git rebase --onto stand develop f3 
git checkout stand 
git merge f3 
+0

美丽,谢谢。还有一个问题:如果我在某人提交任何内容后创建了分支f3,它会合并吗? –

+0

这个特殊的方法只会合并在'f3'分支后实际做出的改变。例如,它不会拉入'f2'。如果这是你想要的,还有其他方法可以吸引它。 –

1

你应该能够选择合并提交(合并两个分支后创建),理论上应该按照你的要求做。

+0

是的,我读过[this](http://stackoverflow.com/questions/1994463/how-to-cherry-pick-a-range-of-commits-and-merge-into-another-branch)的话题,但我想要一些东西:只要告诉git“嘿,前些时候我有名称为f1的分支,但现在我将它合并到开发中并将其移除,现在,请将所有受f1变化影响的开发人员转移到stand。” –

+0

@Alexey Kutuzov等待,“删除它”?然后,你坚持采摘樱桃,不是吗?您是否在寻找某种方式从已删除的历史记录中恢复分支机构? – ANeves

+0

@rubenvb,我真的很抱歉 - 问题不正确(现在修复)。当然,我还没有分支。 –

1

,你可以:

  1. 创建分支f1_cpy(上f1)和分支f3_cpy(上f3),这是两个副本,你将移动/应用;
  2. 结账至f1_cpy,将其重新分配至stand,然后将其合并至stand;
  3. 结帐到f3_cpy,重新分配到stand(现在包括f1_cpy),然后合并f3_cpystand

这是在像挑肥拣瘦的做法,但也许更容易理解和管理/使用。

复制分支的使用是这样,你不会破坏你的真实历史出现问题。
如果你不使用复制分支,并最终失去宝贵的历史...深吸一口气,并潜入git reflog
使用副本,所以你可以随意玩。

杂耍刀只有在受到伤害时才会出色。:|
(我学习了关于git-rebase的课程。)

+0

对不起@ANeves。我没有正确的问题(现在修正):我没有f1和f3分支了。 –

相关问题