如何在没有安装git的情况下应用git diff --binary补丁?

时间:2009-12-15 21:42:25

标签: linux git deployment diff patch

我使用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服务器,如何应用这些二进制补丁文件?

我想保持使用干跑的能力。

谢谢

4 个答案:

答案 0 :(得分:6)

对于一个古怪的答案,你可以做的是使用sshfs将远程系统挂载到你拥有git的地方,然后以这种方式运行你的命令。从不同的参考框架中解决问题:为什么不创建一个数据进入工具的环境(通过sshfs?)

,而不是想知道如何运行工具所在的命令。

答案 1 :(得分:2)

在许多情况下,在这种情况下,您无法使用更高级的工具创建数据,并且使用不太高级的工具。 patch适用于非二进制git-diffs,这是一个幸福的巧合。 git diff引入了标准差异的扩展。

要实现目标,您可以:

  • 在目标系统上安装git(这是最好的方法,真的)
  • 将目标系统挂载到本地,正如chiggsy所说
  • 只是scp / rsync个新文件。对小人来说不错。

答案 2 :(得分:2)

根据the change log,我们可以预期补丁版本&gt; 2.6.1支持GIT二进制差异。

答案 3 :(得分:-5)

使用此

git apply example.patch
git add --patch
git commit

您可以省略--patch标记,但不会看到每个更改并检查修补过程。