我在基于WordPress的项目上工作,我想在每个新发布的WP版本上修补我的项目。为此,我希望在两次提交或标记之间生成一个补丁。

例如,在我的repo /www/WP中,我这样做:

$ git patch-format com1..com2 --stdout > '~/patchs/mypatch.patch'

# or

$ git patch-format tag1..tag2 --stdout > '~/patchs/mypatch.patch'

转到 /www/WP 为您的 WordPress

我的git项目基于WordPress

git应用命令行不能工作,我想是因为我们在不同的存储库中。

我可以生成一个补丁文件而不提交,只是一个差异,并将其应用到另一个git存储库?


当前回答

你可以使用git diff来生成一个统一的适合git apply的diff:

git diff tag1..tag2 > mypatch.patch

然后,您可以应用产生的补丁:

git apply mypatch.patch

其他回答

你甚至可以只对当前所在的子目录打补丁。只要加。

git format-patch -k b365cce8..80a2c18a .

然后你可以应用它们:

git am *.patch

详情请看这个答案

你可以使用git diff来生成一个统一的适合git apply的diff:

git diff tag1..tag2 > mypatch.patch

然后,您可以应用产生的补丁:

git apply mypatch.patch

作为补充,为了只为一个特定的提交生成补丁,使用:

git format-patch -1 <sha>

当生成补丁文件时,当你使用git am ${patch-name}时,确保你的其他repo知道它在哪里。

在添加补丁之前,使用git apply——check ${patch-name}确保没有冲突。

您可以应用两条命令

Git diff——补丁> mypatch。Patch //生成补丁 Git应用mypatch。Patch //应用补丁

要为多次提交生成补丁,您应该使用format-patch git命令。

git format-patch -k --stdout R1..R2

这将导出您的提交到邮箱格式的补丁文件。

要为上次提交生成补丁,运行:

git format-patch -k --stdout HEAD~1

然后在另一个存储库中通过am git命令应用补丁,例如。

git am -3 -k file.patch

参见:man git-format-patch和git-am。