使用 git diff 复制另一个目录中的更改
Using git diff to replicate changes in another directory
我在单个 GIT 存储库下有多个网站结构(简化)如下:
/
/site-1
/site-1/index.js
/site-1/about.js
/site-1/package.json
/site-1/node_modules(not versioned)
/site-1/package-lock.json(not versioned)
/site-2
/site-2/index.js
/site-2/about.js
/site-2/package.json
/site-2/node_modules(not versioned)
/site-2/package-lock.json(not versioned)
/site-3
/site-3/index.js
/site-3/about.js
/site-3/package.json
/site-3/node_modules(not versioned)
/site-3/package-lock.json(not versioned)
我在/site-1/index.js,/site-1/package.json做了一些修改添加了一个文件 /site-1/changes.md。
这些更改是在名为 feature/carousel.
的功能分支中的 2 个单独的 git 提交中完成的
我想在 /site-2 和 /site-3 中应用相同的更改。
我试过以下方法:
git format-patch master -o patches
以检索此功能分支中关于 master 分支的新差异,但我无法在 / 中应用差异站点 2 和 /站点 3.
diff -ruN site-1 site-2 > PatchFile1
生成一个合并的差异,但它也考虑了在 /site-2 中修改过的文件,它不是一个通用的差异可以直接应用于/site-3
知道如何实现吗?
您可以使用 git apply
和 --directory
选项将补丁应用到另一个主目录,如下所述:
首先,根据应用于目录 site-1
的更改创建补丁文件 changes.patch
。然后您可以执行以下操作:
git apply -p1 --directory='site-2' changes.patch
git apply -p1 --directory='site-3' changes.patch
-p1
从补丁 headers 中删除站点文件夹,这是不同目录之间不同的主要部分。
--directory='site-2'
将导致 site-2
前缀添加到补丁
中的每个 header
我在单个 GIT 存储库下有多个网站结构(简化)如下:
/
/site-1
/site-1/index.js
/site-1/about.js
/site-1/package.json
/site-1/node_modules(not versioned)
/site-1/package-lock.json(not versioned)
/site-2
/site-2/index.js
/site-2/about.js
/site-2/package.json
/site-2/node_modules(not versioned)
/site-2/package-lock.json(not versioned)
/site-3
/site-3/index.js
/site-3/about.js
/site-3/package.json
/site-3/node_modules(not versioned)
/site-3/package-lock.json(not versioned)
我在/site-1/index.js,/site-1/package.json做了一些修改添加了一个文件 /site-1/changes.md。 这些更改是在名为 feature/carousel.
的功能分支中的 2 个单独的 git 提交中完成的我想在 /site-2 和 /site-3 中应用相同的更改。
我试过以下方法:
git format-patch master -o patches
以检索此功能分支中关于 master 分支的新差异,但我无法在 / 中应用差异站点 2 和 /站点 3.diff -ruN site-1 site-2 > PatchFile1
生成一个合并的差异,但它也考虑了在 /site-2 中修改过的文件,它不是一个通用的差异可以直接应用于/site-3
知道如何实现吗?
您可以使用 git apply
和 --directory
选项将补丁应用到另一个主目录,如下所述:
首先,根据应用于目录 site-1
的更改创建补丁文件 changes.patch
。然后您可以执行以下操作:
git apply -p1 --directory='site-2' changes.patch
git apply -p1 --directory='site-3' changes.patch
-p1
从补丁 headers 中删除站点文件夹,这是不同目录之间不同的主要部分。
--directory='site-2'
将导致 site-2
前缀添加到补丁