2

我有一个包含一些二进制文件的 git 存储库。我已将 chmod 755 暂存到其中一个二进制文件中,并且我想生成此模式更改的差异,该差异可以使用 git-apply 应用到另一台机器上。我在用着:

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

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

如果我使用以下命令,我可以从 git diff 获得输出:

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

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

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

有任何想法吗?如果二进制文件的内容发生变化以及模式发生变化,差异对我来说似乎很奇怪?

4

1 回答 1

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

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

按照评论进行编辑:使用二进制文件,我得到:

$ 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
于 2012-01-04T19:48:51.120 回答