从 git 存储库创建补丁或差异文件,并将其应用于另一个不同的 git 存储库



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

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

$ git patch-format com1..com2 --stdout > '~/patchs/mypatch.patch'
# or
$ git patch-format tag1..tag2 --stdout > '~/patchs/mypatch.patch'

/www/WP git natif WordPress

/www/myproject 我的git项目基于WordPress

我认为git apply命令行不起作用,因为我们在不同的存储库中。

我可以生成一个没有提交(只有差异)的补丁文件并将其应用于另一个 git 存储库吗?

你可以

使用 git diff 来生成适合git apply的统一差异:

git diff tag1..tag2 > mypatch.patch

然后,您可以使用以下命令应用生成的修补程序:

git apply 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-patchgit-am

您可以应用两个命令

  1. git diff --patch > mypatch.patch//生成补丁'
  2. git apply mypatch.patch//应用补丁'

作为补充,要仅为一个特定提交生成补丁,请使用:

git format-patch -1 <sha>

生成修补程序文件时,请确保其他存储库在使用时知道它的位置git am ${patch-name}

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

您甚至可以只为您当前所在的子目录做补丁。只需添加.

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

然后,您可以应用它们:

git am *.patch

有关详细信息,请参阅此答案

使用此命令。

git diff master..localbranch > file.patch

最新更新