1. 摘要
我的最终目标是将在 linux-kernel 存储库中的客户端分支上完成的一些客户端更改带到另一个 linux-kernel 存储库,因为两者都有一个共同的基本标记(例如 v4.2,客户端的分支已经从最初创建)。
为此,我正在尝试创建一堆补丁,代表客户端分支的基础和头部之间的差异。在这第一步中,我正在使用git format-patch
. 第二步是在第二个 repo 中使用git am
.
git diff
和 GNUdiff
对我不感兴趣,因为我不想丢失提交元数据(作者、消息等)。
2. 演示设置
我创建了一个简单的 git 提交流程来举例说明这个问题。下图描述了这个演示 repo的分支设置:
3. 重现问题的步骤
$ git status
On branch master Your branch is up-to-date with origin/master. nothing to commit, working directory clean.
$ git format-patch BASE
0001-commit-2-br1.patch
$ git checkout BASE
HEAD is now at 65772fd... commit 3-master
$ git apply 0001-commit-2-br1.patch
error: patch failed: file:1 error: file: patch does not apply
4. 附加信息和问题
git diff BASE f316460 > my.patch
作品!然而,正如摘要中所述,这不是我的解决方案。我相信
git format-patch
在多分支设置中还不够聪明。有没有人遇到同样的问题?是否有任何方法可以在没有 的情况下实现相同的目标
git format-patch
?