4

1. 摘要

我的最终目标是将在 linux-kernel 存储库中的客户端分支上完成的一些客户端更改带到另一个 linux-kernel 存储库,因为两者都有一个共同的基本标记(例如 v4.2,客户端的分支已经从最初创建)。

为此,我正在尝试创建一堆补丁,代表客户端分支的基础和头部之间的差异。在这第一步中,我正在使用git format-patch. 第二步是在第二个 repo 中使用git am.

git diff和 GNUdiff对我不感兴趣,因为我不想丢失提交元数据(作者、消息等)。

2. 演示设置

我创建了一个简单的 git 提交流程来举例说明这个问题。下图描述了这个演示 repo的分支设置:

  1. Gitg图 - 提交时间顺序: 在此处输入图像描述

  2. Gitg图 - 拓扑顺序:在此处输入图像描述

  3. Gitk图形:
    在此处输入图像描述

  4. git log --oneline --graph --decorate在此处输入图像描述

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

4

0 回答 0