git - 通过将大型 git 提交拆分为 master 分支上的小型提交来 merge 大型 git 提交

标签 git merge

我在 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/

相关文章:

Git 错误 : RPC failed; result=52, HTTP 代码 = 0

git - 使用 git 只克隆一个子目录

git - 为什么 'git diff' 的输出与 'git show' 不同?

android - 同时播放两种声音-Android

python - Pandas dataframe - 根据两列的 ID 查找匹配的行

svn - 合并时忽略文件/文件夹

git - 为新的主要更新创建单独的存储库?

Eclipse Git(Egit)不接受远程用户名和密码

merge - Grafana Prometheus 合并两列

python - 在不同的目录中合并 pandas csv