我有两个单独的 git 存储库:A 和 B。一些存储库 B 文件已经存在于项目 A 的子文件夹中。我的目标是为存储库 B 创建补丁,然后将它们应用到存储库 A 中的子文件夹以保存存储库 B 的历史记录在合并它们时。问题是补丁无法创建新文件。例如:
假设这个文件夹结构: /home/user/B/..bunch 目录和 /home/user/A/ext/lib/B/..bunch 目录
cd /home/user/B
git format-patch "xx..xx" -o /home/user/A/ (创建补丁文件)
cd /home/user/A
git apply -v --directory=ext/lib/B/0001-foo-12345.patch
工作正常,因为补丁没有创建任何新文件或尝试访问 B 中存在但 A 中不存在的文件夹
但
cd /home/user/A
git apply -v --directory=ext/lib/B/0002-foo2-6789.patch
不起作用并抛出此错误:检查补丁 ext/lib/B/xyz/test.c... 错误:ext/lib/B/xyz/test.c:没有这样的文件或目录。
到目前为止,我已经尝试了以下命令:
git apply -v --directory=/home/user/A/lib/B/ --include=bb/cc --exclude=cc/ --exclude=bb/ --include=* 0002-foo2-6789.patch
git apply -v --directory=/home/user/A/lib/B/ --include=* --include=bb/cc --exclude=cc/ --exclude=bb/ 0002-foo2-6789.patch
git am --directory=/home/user/A/lib/B/ --include=* --include=bb/cc --exclude=cc/ --exclude=bb/ 0002-foo2-6789.patch