接受的答案如下所述:补丁,git diff产生的,将被正确处理patch工具。我相信我刚遇到了一个不正确的情况。 /usr/bin/patch无声无息地(没有报告错误)忽略了我的修补程序,包括文件重命名信息,从而破坏了部署(幸运的是,此时我仅在测试部署...)我发布这个备选答案是为了提醒其他遇到同样问题的人,因为我一直在思考一段时间... 另外,StackOverflow上对答案的评论显然不能包含引用。有趣的是,我现在刚刚转换到统一的diff格式来克服这个问题,现在我的部署以不同的方式中断了,因为统一的diff无法表示创建空文件(例如__init__.py)。 谈论处于困境中!
git format-patch
命令生成的补丁,如果没有使用 -M/-C 选项并包含重命名等信息,那么它们也可以被 GNU patch 正确处理。 - Jakub Narębskipatch
手册中可以看到:“patch
尝试跳过任何前导垃圾,应用差异,然后跳过任何尾部垃圾。” Git差异中的独特之处在于添加了模型线(例如,“index ...”,“rename ...”,“new file ...”),而patch
可以简单地跳过这些内容。Git还为文件名添加前缀,例如“a/path/to/file”,但是这可以通过patch
的-p1选项跳过。 - Cascabel--no-prefix
选项吗? - P Shved--no-prefix
选项解决了问题。否则默认生成的差异与“patch”不兼容。 - coladict