如何从实验分支(本地)应用补丁(仅将实验中的一些行复制到 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 个分支:master
、suggestFix
和 experimental
。 suggestFix
指向与 master
相同的位置,因为我想使用 master
作为起点在 GitHub 上创建拉取请求。 Experimental
有不同的提交,我只想移动到 suggestFix
分支 experimental
.
中的一些代码行
这里是 master 和 suggestFix 分支:
我希望我的 suggestFix 分支在我使用 git 工具完成任何需要的事情后看起来像这样:
我不在乎历史看起来如何,只要我可以提出拉取请求,它看起来就像我修改了 master 并通过行插入从 master 到 suggestFix
(因为它通常显示在GitHub).
上的拉取请求
我知道我需要检查每个文件的每一行,并接受或拒绝对行的编辑,或者它们也被称为代码块。这是我想要的。我混合使用 Atlassian Sourcetree 和 MINGW64。我设法在 Sourcetree 上开始了某种差异:
但我不明白如何做每行补丁并获得我需要的文件(你可以在上面的第三张图片中看到)。请帮忙,我已经尝试了好几个小时了。
这是一个包含该特定示例的 GitHub 存储库:
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
.
删除所有未暂存的更改
所以我有 3 个分支:master
、suggestFix
和 experimental
。 suggestFix
指向与 master
相同的位置,因为我想使用 master
作为起点在 GitHub 上创建拉取请求。 Experimental
有不同的提交,我只想移动到 suggestFix
分支 experimental
.
这里是 master 和 suggestFix 分支:
我希望我的 suggestFix 分支在我使用 git 工具完成任何需要的事情后看起来像这样:
我不在乎历史看起来如何,只要我可以提出拉取请求,它看起来就像我修改了 master 并通过行插入从 master 到 suggestFix
(因为它通常显示在GitHub).
我知道我需要检查每个文件的每一行,并接受或拒绝对行的编辑,或者它们也被称为代码块。这是我想要的。我混合使用 Atlassian Sourcetree 和 MINGW64。我设法在 Sourcetree 上开始了某种差异:
但我不明白如何做每行补丁并获得我需要的文件(你可以在上面的第三张图片中看到)。请帮忙,我已经尝试了好几个小时了。
这是一个包含该特定示例的 GitHub 存储库:
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
.