我使用git diff来生成可以应用于远程服务器以更新项目的补丁。
在当地,我跑:
git diff --no-prefix HEAD~1 HEAD > example.patch
将example.patch上传到远程服务器并运行:
patch --dry-run -p0 < example.patch
如果干跑成功,我会跑:
patch -p0 < example.patch
这种方法很有效,除非diff包含二进制文件。今天,我发现我可以使用:
git diff --no-prefix --binary HEAD~1 HEAD > example.patch
问题是无法使用补丁程序应用生成的补丁文件。
如果不安装git服务器,如何应用这些二进制补丁文件?
我想保持使用干跑的能力。
谢谢
答案 0 :(得分:6)
对于一个古怪的答案,你可以做的是使用sshfs将远程系统挂载到你拥有git的地方,然后以这种方式运行你的命令。从不同的参考框架中解决问题:为什么不创建一个数据进入工具的环境(通过sshfs?)
,而不是想知道如何运行工具所在的命令。答案 1 :(得分:2)
在许多情况下,在这种情况下,您无法使用更高级的工具创建数据,并且使用不太高级的工具。 patch
适用于非二进制git-diffs,这是一个幸福的巧合。 git diff
引入了标准差异的扩展。
要实现目标,您可以:
scp
/ rsync
个新文件。对小人来说不错。答案 2 :(得分:2)
根据the change log,我们可以预期补丁版本&gt; 2.6.1支持GIT二进制差异。
答案 3 :(得分:-5)
使用此
git apply example.patch
git add --patch
git commit
您可以省略--patch标记,但不会看到每个更改并检查修补过程。