如何生成模式更改为二进制文件的git diff(补丁)?

时间:2012-01-04 19:13:08

标签: git git-diff

我有一个包含一些二进制文件的git repo。我已经将chmod 755上传到其中一个二进制文件中,我想生成这种模式更改的差异,可以在另一台机器上使用git-apply。我正在使用:

git diff --no-color --no-ext-diff --binary --cached 560d4ad7ca02fe3cb2403da89fadae0c27fbbe73

这适用于非二进制模式更改,甚至二进制模式更改,只要二进制文件本身也已更改。但是如果只有二进制文件上的模式发生了变化,那么上面的差异就是空的。

如果我使用的话,我可以从git diff获得输出:

git diff --no-color --no-ext-diff --binary --cached --raw 560d4ad7ca02fe3cb2403da89fadae0c27fbbe73

不幸的是,上述命令的输出无法输入git apply:

:100644 100755 e944703... e944703... M  asbserver

有什么想法吗?我觉得奇怪的是,如果二进制文件的内容发生了变化以及模式改变,那么diff会起作用吗?

1 个答案:

答案 0 :(得分:0)

$ chmod +x foo
$ git diff
diff --git a/foo b/foo
old mode 100644
new mode 100755

我得到一个似乎可用的差异。也许你的问题在申请方面更多。你是如何申请补丁的?您使用的是--apply switch吗? (在某些情况下可能需要,这取决于你的完整命令)。

在评论后面编辑:我得到一个二进制文件:

$ chmod +x favicon.ico
$ git diff
diff --git a/assets/favicon.ico b/assets/favicon.ico
old mode 100644
new mode 100755

并且favicon.ico被正确猜测为二进制:

$ git show f948cbeb33532d0803a9c | grep favicon
diff --git a/assets/favicon.ico b/assets/favicon.ico
Binary files /dev/null and b/assets/favicon.ico differ
相关问题