假设 git 树显示为:
1 ----> 2 ----> 3 -----> 4(HEAD/MASTER)
\
\ (PATCH)
--2A->
我有一个补丁,它是 2 和 2A 的差异,它增加了一个功能。
有没有一种聪明的方法可以将此补丁应用于最新的提交?假设我只有补丁文件和主线的 git repo。
先试试简单的方法。如果你已经在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查看您创建的历史记录。
正如TheCodeArtist 指出的那样,如果您有一个补丁文件,您可以通过简单地使用它来应用它git apply <patch>
:
git checkout master
git apply <patch>
根据官方 Linux Kernel Git 文档git apply
:
姓名
git-apply - 将补丁应用于文件和/或索引
描述
读取提供的差异输出(即“补丁”)并将其应用于文件。
此命令应用补丁但不创建提交。使用git-am(1)从由git-format-patch(1)生成和/或通过电子邮件接收的补丁创建提交。