从git仓库创建补丁或diff文件并将其应用到另一个不同的git仓库

hxzsmxv2  于 2023-01-11  发布在  Git
关注(0)|答案(6)|浏览(300)

我的工作基于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 git原生语言WordPress
/www/myproject我的git项目基于WordPress
git apply命令行不起作用,我想是因为我们在不同的存储库中。
我可以生成一个补丁文件而不用提交,只需要一个差分,然后将其应用到另一个git仓库吗?
谢谢你。

1sbrub3j

1sbrub3j1#

你可以只使用git diff来产生一个适用于git apply的统一的diff:

git diff tag1..tag2 > mypatch.patch

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

git apply mypatch.patch
vshtjzan

vshtjzan2#

要为多个提交生成补丁,您应该使用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

fdbelqdn

fdbelqdn3#

您可以应用两个命令

  1. git diff --patch > mypatch.patch//生成修补程序'
  2. git apply mypatch.patch//以应用修补程序'
uurity8g

uurity8g4#

作为补充,要仅为一个特定提交生成修补程序,请用途:

git format-patch -1 <sha>

当生成补丁文件时,请确保在使用git am ${patch-name}时其他存储库知道它的位置
在添加修补程序之前,请使用git apply --check ${patch-name}确保没有冲突。

dtcbnfnu

dtcbnfnu5#

你甚至可以只为你当前所在的子目录打补丁,只需要添加.

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

然后您可以应用它们:

git am *.patch

详情请参见this answer

khbbv19g

khbbv19g6#

使用此命令。

git diff master..localbranch > file.patch

相关问题