多分支设置中的git格式修补程序

多分支设置中的git格式修补程序,git,version-control,linux-kernel,format-patch,Git,Version Control,Linux Kernel,Format Patch,1。摘要 我的最终目标是将在linux内核repo中的客户端分支上所做的一些客户端更改带到另一个linux内核存储库,因为两者都有一个公共的基本标记(例如,v4.2,客户端的分支最初是从它创建的) 为此,我尝试创建一个补丁堆栈,表示客户端分支的底部和头部之间的差异。在这第一步中,我使用的是git格式补丁。第二步是使用gitam在第二次回购中应用这些补丁 git diff和GNUdiff对我不感兴趣,因为我不想丢失提交元数据(作者、消息等) 2。演示设置 我创建了一个简单的git提交流来举例说明这

1。摘要

我的最终目标是将在linux内核repo中的客户端分支上所做的一些客户端更改带到另一个linux内核存储库,因为两者都有一个公共的基本标记(例如,v4.2,客户端的分支最初是从它创建的)

为此,我尝试创建一个补丁堆栈,表示客户端分支的底部和头部之间的差异。在这第一步中,我使用的是
git格式补丁
。第二步是使用
gitam
在第二次回购中应用这些补丁

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

2。演示设置

我创建了一个简单的git提交流来举例说明这个问题。以下图表描述了该系统的分支设置:

  • Gitg
    图形-提交时间顺序:

  • Gitg
    图-拓扑顺序:

  • Gitk
    graph:

  • git日志--oneline--graph--decoration

  • 3。重现问题的步骤

    • $git状态

      分支主机上的
      
      您的分支机构与origin/master是最新的。
      没有要提交的内容,正在清理工作目录。

    • $git格式补丁库

      0001-commit-2-br1.补丁

    • $git签出基数

      头部现在是65772fd。。。提交3-master

    • $git apply 0001-commit-2-br1.补丁

      错误:修补程序失败:文件:1
      错误:文件:修补程序不适用

    4。其他信息和问题

    • git diff BASE f316460>my.patch
      有效!然而,正如在摘要中所述,这不是我的解决方案

    • 我认为在多分支设置中,
      git格式补丁
      不够智能。有人遇到过同样的问题吗

    • 有没有什么方法可以在没有git格式补丁的情况下实现相同的目标


    您必须阅读关于
    git-rebase
    命令的文档,尤其是关于
    git-rebase--on
    。请不要重新发明轮子。@Andy Shevchenko:谢谢,我已经设法将新的本地分支重新设置为客户的远程分支。然而,在我看来,
    git格式补丁
    问题仍然有效。你显然做了一些难以理解的事情。您有一个合并提交,这对Git来说是不寻常的(是的,合并提交是异常的,并以特定的方式处理)。我很确定,
    git格式补丁
    创建了一些与
    git diff
    不同的东西。您可以试着运行补丁程序-p1<0001-commit-2-br1。补丁程序,看看有什么问题。@AndyShevchenko:在我看来,提交图非常简单和常见<代码>git am,
    git apply
    和GNU
    补丁
    全部失败<代码>git格式修补程序即使在考虑第一次提交时也会失败(如果我在启动此线程之前知道,我会选择这种情况)。您可以尝试运行
    修补程序-p1<0001-commit-2-br1.patch
    ,看看哪里出了问题。