2017-08-31 70 views
0

由于产品需求的变化,我需要做一些看起来不自然的事情。长话短说我需要基于旧提交的提交,将更改提交到主分支,然后获取之前的主分支并将其放在该提交之上。由于Git和SourceTree的用户敌意,应该是一个5分钟的工作花了一个多小时,并导致了似乎是5个分支。Git,违规提交

我会试图找出我在下面试图做什么,所以它更有意义。也许最简单的底部阅读顶部:

[]    <- New master which is Commit A minus an old file 
[] ---\   <- Branch B is merged 
[] \ []  <- Branch A is merged 
[] [] []  <- Branch A is based off another, way older branch, code just cut and paste in. Branch B is the same as Commit A minus an old file 
[] /--/   <- Commit A gets two branches 

我几乎在这里失去了我的心,不知道该怎么寻找和不知道如何做到这一点,因为很显然,我不能只是分支的两倍并重新提交。根据SourceTree的说法,当我试图从上面的例子中将Master B合并到分支B中时,它不做任何事情,它只改变一个事物并忽略分支B中的所有其他更改(实质上使主分支与分支A相同这是我想要避免的)。然后,我尝试重新装配主人,然后,在做完这些事情之后,它将分支A从主线上抛下,这不是我想要做的。在这一点上,我有4个分支合并和/或浮动在一个主分支,射过它的一切。我不关心它看起来干净,我只需要妥善合并。

谢谢

+3

建议:不要考虑*分支*。只考虑*提交*。你想要的提交顺序是什么?每个提交的父项应该是什么,其相应的源代码树应该是什么?把它们画出来(在白板上,纸上,不管)。只有当你把所有这些想出来的时候,你应该关注分支*名字*。这是因为这也是Git的工作原理,所以你将在这一点上做好准备,让Git实现你想要的。 (另外,我认为你已经到了这一步的一半了!) – torek

+0

听起来像一个5分钟的工作'git rebase -i' – o11c

回答

0

我敢肯定,这不是做事的正确方法,但-torek让我在正确的轨道上;考虑提交而不是分支机构。所以,我只是在两个不同的提交中剪切并粘贴所有文件。现在一切都是有序的,除了枝条无处可去,但无论如何,它们都会腐烂。

谢谢。