如何将修补程序应用于git子树合并?

如何将修补程序应用于git子树合并?,git,merge,patch,subtree,Git,Merge,Patch,Subtree,我通过子树合并向git存储库添加了一个子项目。我现在需要对子项目应用补丁,但是运行“git apply-v patch_name.patch”不会返回任何结果。没有错误消息,也没有更改任何文件 我尝试过分别克隆子项目(即,克隆到子目录/tmp中),并将其与主项目下的子项目目录中的内容进行比较;目录是相同的 当我对/tmp下的克隆运行补丁时,它会按预期应用。问题似乎与子项目目录是子树合并的结果这一事实有关 我想我可以修补新克隆下的文件,然后将它们复制到主项目下的子项目目录中。看来我不该那么做。有没

我通过子树合并向git存储库添加了一个子项目。我现在需要对子项目应用补丁,但是运行“git apply-v patch_name.patch”不会返回任何结果。没有错误消息,也没有更改任何文件

我尝试过分别克隆子项目(即,克隆到子目录/tmp中),并将其与主项目下的子项目目录中的内容进行比较;目录是相同的

当我对/tmp下的克隆运行补丁时,它会按预期应用。问题似乎与子项目目录是子树合并的结果这一事实有关


我想我可以修补新克隆下的文件,然后将它们复制到主项目下的子项目目录中。看来我不该那么做。有没有更好的解决方法?

引用git apply手册:

如果补丁包含对子模块的任何更改,那么git apply将处理这些更改 这些变化如下

如果指定了--index(显式或隐式),则子模块提交必须与要应用补丁的索引完全匹配。 如果签出了任何子模块,则 完全忽略退房,即不要求退房是最新的或干净的,也不需要更新退房

如果未指定--index,则忽略修补程序中的子模块提交,并且仅忽略 检查并(如果可能)更新相应的子目录

换句话说,您必须为git apply提供
--index
,以关注子模块


如果您想“强制通过”更改,您可能会考虑使用正常的<代码>补丁>代码>命令,虽然它不会得到权限更改等,也可以在子树上使用<代码> Git CouthOutRe/Poto/DRR/COD>(或您建议的手动副本)。