我在 git 中有一个分支,可以干净地应用于 master。它包含一个包含 10 个功能的提交,这些功能可以完全应用于 master。但我想将这些更改 merge 到基于主功能的中。功能更改不在文件级别(因此一个更改文件可能包含 2-3 个功能的更改,但幸运的是它们可以轻松拆分)。但对整个文件内容的任何 merge 策略都会失败,因此,对于一项功能来说,它更像是 merge 文件 1 中的第 10-20 行、文件中的第 70-80 行以及文件 3 中的第 100 行。有没有一种编辑器可以
- 允许我在巨大的提交中选择行
- 允许我将选取的行 merge 到 master 中的一个小提交
--> 最终,这将是“一个分支上的一次大提交”转换为 master 上的 10 个提交,逐个功能
是否有任何工具(链)可以在视觉上支持这样的工作流程?
最佳答案
鉴于您希望将工作零碎地 merge 到master
中在非 master
的一次提交中all-in-one
分支,我建议分解 all-in-one
首先提交,然后一次将一个较小的提交 merge 到master
中。这样,与 merge 到补丁中不同,您的 Git 历史记录将能够跟踪更改的来源。
有多种方法可以实现这一点。一种方法是创建第二个 piecemeal
master
的分支从与您的 all-in-one
相同的起点开始分支、 merge all-in-one
进入piecemeal
分支而不提交,取消暂存任何暂存的更改,然后开始将未暂存的工作分解为 piecemeal
上的更小的提交。 .
要借助视觉辅助将未暂存的工作分解为多个提交,git add --patch .
允许您将每个当前未暂存的“ block ”代码暂存(或不暂存)到控制台中的 Git 索引。
git gui
提供了一种图形化方式来执行相同操作:选择未暂存的文件,右键单击文件的部分,然后单击 Stage Hunk For Commit
。请参阅http://www.adamfranco.com/2009/01/13/git-tip-of-the-day-stage-hunks/获取逐步图片和更多详细信息。
关于git - 通过将大型 git 提交拆分为 master 分支上的小型提交来 merge 大型 git 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37226897/