如何解决补丁应用后自动合并与冲突
我有几个“完全相同”的 package.json 和几个配置文件的存储库。我在一个存储库中进行了更改,并希望将此更改传播到其他存储库。我设法按照以下说明做正确的事情:
- git format-patch HEAD^(来自已更改的 repo)
- git remote add patch repo/with/changes(来自需要更改的仓库)
- git fetch patch(来自需要更改的存储库)
- git am -3 path/to/patch/patch --ignore-whitespace --ignore-space-change(来自需要更改的存储库)
- 手动合并冲突(视觉工具)
问题出在最后一步——我也想自动化这一步。是否可以定义一些合并策略,例如“在与补丁连接的行上合并我们的,在所有其他冲突的行上合并他们的”?我在 package.json 文件上有相当简单的冲突,其中冲突的行来自补丁(我希望这些有),或者来自某些包的包名和版本(我希望它保持原样)。
我知道,最好想办法避免复制和移动类似的文件到某个共享包,但我不知道如何为“package.json”之类的部分完成它,以及它是否值得它。对此问题的任何建议也非常感谢,但主要关注点仍然是补丁的“现状”问题。或者也许可以通过其他方式将更改传播到不同存储库的几乎重合部分。
我想要自动合并的示例如下(例如,在 package.json 中,其他文件在没有冲突的情况下合并并从补丁中获取更改,但我想在其他情况下,其他文件中也可能存在类似问题)
来自第一个 repo(补丁来源)
{
"name": "packageA",...
script A: "..." // <- patch changed something here
... // <- patch changed something here
script C: "..." // <- patch changed something here
...
dependencies: {
somePackage: "versionA"
}
}
来自第二个仓库
{
"name": "packageB",// <- here is conflict,I want to leave "package B"
...
script A: "..." // <- here is conflict,I want to get it from patch
... // <- here is conflict,I want to get it from patch
script C: "..." // <- here is conflict,I want to get it from patch
...
dependencies: {
somePackage: "versionB" // <-- here is conflict,I want to leave "versionB"
}
}
解决方法
我尝试了 cherry-pick --strategy-option theirs
而不是 am -3
并且它终于奏效了 - 合并没有任何冲突,保留了我想要的一切。我不知道,这些是合并策略功能还是我以某种方式未能制作正确的补丁(看起来很正常)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。