0

假设 git 树显示为:

1 ----> 2 ----> 3 -----> 4(HEAD/MASTER)
      \
       \ (PATCH)
        --2A->

我有一个补丁,它是 2 和 2A 的差异,它增加了一个功能。

有没有一种聪明的方法可以将此补丁应用于最新的提交?假设我只有补丁文件和主线的 git repo。

4

2 回答 2

1

先试试简单的方法。如果你已经在master上,

git apply PATCH

如果补丁不适用于 HEAD / master,试试这个:

git checkout 2
git apply PATCH
git tag patch-applied
git checkout master
git cherry-pick patch-applied

或者

git checkout 2
git apply PATCH
git tag patch-applied
git checkout master
git merge patch-applied

对于合并和变基,您可能需要解决冲突。rebase 给你一个线性历史,merge 给你一个分支历史。

您可以使用git lola查看您创建的历史记录。

于 2014-05-28T05:26:07.193 回答
0

正如TheCodeArtist 指出的那样,如果您有一个补丁文件,您可以通过简单地使用它来应用它git apply <patch>

git checkout master
git apply <patch>

根据官方 Linux Kernel Git 文档git apply

姓名

git-apply - 将补丁应用于文件和/或索引

描述

读取提供的差异输出(即“补丁”)并将其应用于文件。

此命令应用补丁但不创建提交。使用git-am(1)从由git-format-patch(1)生成和/或通过电子邮件接收的补丁创建提交。

于 2013-08-20T14:52:07.163 回答