将分支与主分支上的先前提交合并的方法,然后重新应用以后的主提交

时间:2012-08-23 23:44:46

标签: git

我有一个主分支,由另一个dev分支,然后添加了功能。与此同时,我对一些相同的文件进行了更改。虽然线上没有直接冲突,但我想知道使用不同的方法将其他分支合并回master,并且冲突最小。

ASCII艺术可视化:

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

我最好检查提交A,将分支合并为3,然后重新应用B到D中的更改?或者我应该将3合并回D?或者我确信有一些更好的方法可以让我失踪。

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

2 个答案:

答案 0 :(得分:3)

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

git rebase orig

答案 1 :(得分:1)

您所描述的内容 - 签出A,合并1 - 3,然后应用B - D - 是一种称为变基的标准Git技术。假设没有无法自动解决的冲突,您可以使用一个命令执行此操作:

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

如果在进行rebase时存在冲突,Git会通过解决它们来与您联系。

然而,正常的Git工作流程只是将分支合并在一起。除非你有某些理由不这样做,否则我主张进行合并。

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