通过将大型git提交拆分为主分支

时间:2016-05-14 12:51:37

标签: git merge

我在git中有一个分支,可以干净地应用到master。它包含一个提交,其中包含10个可以完全应用于master的功能。但我想将更改合并为主要功能。功能更改不在文件级别(因此一个更改文件可能包含2-3个功能的更改,但它们可以很容易地分开)。但是,对整个文件内容的任何合并策略都失败了,它更像是来自文件1的合并行10-20和来自文件的行70-80以及来自文件3的行100用于一个特征。

有什么样的编辑器吗?
  • 允许我选择巨额提交中的行
  • 允许我将选中的行合并为一个小提交到主

- >最终它将是一个分支上的一个大型提交"在master上转换为10个提交,按功能转换

是否有任何工具(链)可以直观地支持这样的工作流程?

2 个答案:

答案 0 :(得分:2)

鉴于您要将零碎合并到master中的工作是在非master all-in-one分支的一次提交中,我建议您分解{{首先提交,然后将一个较小的提交一次合并到all-in-one。这样,与在补丁中合并相反,您的Git历史记录将能够跟踪更改的来源。

有多种方法可以实现这一目标。一种方法是从与master分支相同的起点创建piecemeal的{​​{1}}分支,将master合并到all-in-one分支中提交,取消暂存任何分阶段的更改,然后开始将未分段的工作分解为all-in-one上的较小提交。

要通过视觉帮助将未分段的工作分成多个提交,piecemeal允许您暂存(或不分段)每个当前未分级的' hunk'代码到控制台中的Git索引。

piecemeal提供了一种图形化方式:选择未分段文件,右键单击文件部分,单击git add --patch .。有关逐级图片和更多详细信息,请参阅http://www.adamfranco.com/2009/01/13/git-tip-of-the-day-stage-hunks/

答案 1 :(得分:0)

假设分支类似于-A-B,并且您希望将B拆分为多个提交。

git reset A
git add some_file -p
git commit
git add some_file -p
git commit
...

参考:git-add看看EDITING PATCHES部分,试试看