繁体   English   中英

通过将大型git commit拆分为master分支上的小提交来合并

[英]Merge large git commit by splitting it into small commits on master branch

我在git中有一个分支,它将完全适用于master。 它包含一个带有10个功能的提交,可以完全应用于master。 但我想将更改合并到基于主功能。 功能更改不在文件级别上(因此,一个更改文件可能包含2-3个功能的更改,但是很幸运,它们可以轻松拆分)。 但是,对整个文件内容的任何合并策略都将失败,这更像是针对一个功能合并文件1中的第10-20行,文件中的70-80行和文件3中的行100。 是否有任何一种编辑器会

  • 请允许我在巨大的承诺中挑线
  • 请允许我将选取的行合并为一个小的提交到master

->最后,它将是“分支上的一个大提交”转换为master上的10个提交,每个功能

是否有任何工具(链)在视觉上支持这种工作流程?

鉴于您要零碎合并到master是在非master all-in-one分支上的一次提交all-in-one ,我建议先分解all-in-one提交,然后在一次合并一个较小的commit。时间master 这样,与合并补丁程序不同,您的Git历史记录将能够跟踪更改的来源。

有多种方法可以实现此目的。 一种方法是创建第二个piecemeal分支关闭的master从相同的起点为您的all-in-one分支,合并all-in-one进入piecemeal分公司没有提交,unstage任何阶段性的变化,然后开始分手分阶段进行的piecemeal

为了在视觉帮助下将未进行的工作分解为多个提交, git add --patch . 允许您将(或不)将每个当前未暂存的“大块”代码暂存到控制台中的Git索引。

git gui提供了一种图形化的方法来执行此操作:选择未暂存的文件,右键单击文件部分,单击“暂存Stage Hunk For Commit 有关逐步的图片和更多详细信息,请参见http://www.adamfranco.com/2009/01/13/git-tip-of-the-day-stage-hunks/

假设分支类似于-AB并且您想将B拆分为多个提交。

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

参考: git-add看看EDITING PATCHES部分并尝试一下

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM