我有一个补丁文件(所有这些都适用于单个文件)
git log -p file-of-interest.txt >patches.txt
Run Code Online (Sandbox Code Playgroud)
现在我想在另一个回购中应用这些补丁,但是当我尝试时
git am patches.txt
Run Code Online (Sandbox Code Playgroud)
我收到错误消息"修补程序格式检测失败".
(git apply也不起作用).哪种方法适用于这些补丁?
编辑:我想要做的是将两个提交之间的单个文件的所有更改提取到一组修补程序中,然后将这些更改应用到另一个仓库中.git log -p from..to -- the-file将生成差异.如果无法应用补丁git log,是否可以format-patch生成(或其他命令)仅为单个文件生成补丁?
twa*_*erg 10
您需要将补丁分解为单个补丁.您可以从git log -p输出中手动执行此操作,然后使用git apply它们按顺序应用它们.git log -p输出并不是真正意图git处理......
但更好的选择是使用git format-patch为您创建补丁文件序列(无需手动拆分),然后用于git am一次性应用它们...
git format-patch -o <output_directory> <from_revision>..<to_revision> -- file-of-interest.txt
Run Code Online (Sandbox Code Playgroud)
还要注意git am预期电子邮件格式的补丁(如生成的那些git format-patch,这就是"补丁格式检测失败"的原因).使用diff或git diff应该应用的补丁git apply,而不是git am.但git format-patch/ git am工作流程更灵活,通常更强大.