我需要带有测试的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仅跟踪可执行位,请参阅链接的答案