2012-08-23 170 views
0

我有一个主分支,由另一个dev分支,然后添加了一些功能。同时,我对一些相同的文件进行了修改。虽然在行上没有直接的冲突,但我想知道使用不同的方法将其他分支合并回主,最小的冲突。合并分支与先前在主分支上提交的方法,然后稍后重新提交主提交

ASCII技术可视化:

A-B-C-D 
\ 
1-2-3 

我是最好关闭检查出提交A,在3合并分支回,然后通过重新应用d B中的变化?或者我应该把3合并回D?或者我确信有一些更好的方法,我错过了。

我对git相当陌生,我想我已经掌握了它,但我只是想确保我正确地使用它。

回答

1

你描述检查出来A,合并在1什么 - 3,然后应用B - D -is称为重订一个标准的Git技术。假设不存在冲突,不能自动解决,你可以用一条命令做到这一点:

git rebase --onto {commit 3} {commit A} {commit D} 

如果存在冲突做底垫中时,Git会讨论通过解决这些问题。

但是,正常的Git工作流只是将分支合并在一起。除非你有理由不这样做,否则我会主张合并。

合并更准确地反映了开发过程;这意味着您可以查看您的历史记录,并确切了解如何开发功能,然后合并到主代码中。重新激活使您的历史看起来人为干净;有时候这很有用,但它隐藏了事情的完成方式。

3

假定A-B-C-D的原始分支名称是“orig”。你在“3”,分支名称为“主”。试试这个:

git rebase orig 
+1

+!重新设计是好的。最好的建议是在推动远程和其他开发人员也在尝试之前做到这一点。压缩对于代码审查也非常有用。 –

+0

我很犹豫是否要重组。亚历山大失去了多少历史?如果这已经在远程回购,那么它会对其他开发者产生多大影响? – mwotton