git不会检测二进制文件上的filemode更改

时间:2015-04-30 09:35:25

标签: git

我需要带有测试的repo中的二进制文件(它是一个mp3文件)。该文件最初以644权限提交,我宁愿将其视为444。

虽然git在检测文本文件的文件属性更改方面没有问题,但它似乎无法识别二进制文件模式的更改。

假设:

tar czf foo.bin /usr/include/*.h
chmod 644 foo.bin
git add foo.bin
git commit -m 'foo headers'

按预期生效:

# [master 1509a71] foo headers
#  1 file changed, 0 insertions(+), 0 deletions(-)
#  create mode 100644 foo.bin

但是我们可以将权限更改为只读:

chmod 444 foo.bin
git add foo.bin
git commit --amend --no-edit

然后我希望foo.bin具有适当的属性,但它没有:

# [master 0da87b5] foo headers
# 1 file changed, 0 insertions(+), 0 deletions(-)
# create mode 100644 foo.bin

git --no-pager show --pretty="format:"

# diff --git a/foo.bin b/foo.bin
# new file mode 100644
# index 0000000..08c1e71
# Binary files /dev/null and b/foo.bin differ

这是一个全新的回购,当然git config core.fileMode设置为true

所以我的问题是:

为什么会这样?

如何强制git识别文件模式更改?

编辑:

TL; DR - git仅跟踪可执行位,请参阅链接的答案

0 个答案:

没有答案