如何从实验分支(本地)应用补丁(仅将实验中的一些行复制到 suggestFix 分支)到 suggestFix 分支(本地)?

How to apply a patch(copy only some lines from experimental to suggestFix branch) from experimental branch(local) onto suggestFix branch(local)?

所以我有 3 个分支:mastersuggestFixexperimentalsuggestFix 指向与 master 相同的位置,因为我想使用 master 作为起点在 GitHub 上创建拉取请求。 Experimental 有不同的提交,我只想移动到 suggestFix 分支 experimental.

中的一些代码行

我将提供一个具体的例子。这是实验分支的最终文件:

这里是 master 和 suggestFix 分支:

我希望我的 suggestFix 分支在我使用 git 工具完成任何需要的事情后看起来像这样:

我不在乎历史看起来如何,只要我可以提出拉取请求,它看起来就像我修改了 master 并通过行插入从 master 到 suggestFix(因为它通常显示在GitHub).

上的拉取请求

我知道我需要检查每个文件的每一行,并接受或拒绝对行的编辑,或者它们也被称为代码块。这是我想要的。我混合使用 Atlassian Sourcetree 和 MINGW64。我设法在 Sourcetree 上开始了某种差异:

但我不明白如何做每行补丁并获得我需要的文件(你可以在上面的第三张图片中看到)。请帮忙,我已经尝试了好几个小时了。

这是一个包含该特定示例的 GitHub 存储库:

https://github.com/KulaGGin/GitPatch

So I have 3 branches: master, suggestFix and experimental. suggestFix points at the same place as master because I want to use master as a starting point to create pull request on GitHub. Experimental has different commits, and I want to move to suggestFix branch only some lines of code from experimental.

对此的回答是切换到 suggestFix 分支,然后 运行 git merge experimental --squash。这会将实验中的所有提交压缩为单个提交并将它们暂存。因此,首先取消暂存所有更改,然后 运行 git add --patch <filename> 选择您要提交的代码块。 Detailed explanation。或者您可以使用 UI 的工具更轻松地完成此操作,例如 Sourcetree:

然后您只需提交您在 suggestFix 分支上暂存的更改。然后您可以使用 git reset --hard.

删除所有未暂存的更改