我有一个包含一些二进制文件的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会起作用吗?
答案 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