我通过提供git文件blob(文件内容哈希)git log --find-object
来识别提交。
这工作正常,我通过使用获取文件之前的斑点 git hash-object
但是,当我git hash-object
为完全相同的文件发布并且设置了时 core.autocrlf=true
,我得到了另一个blob(哈希值)。
因此git log --find-object
,不会标识与该“新” blob对应的提交。
发生什么事了?这是否意味着什么git hash-object
时候“不起作用” core.autocrlf=true
?
当将文件写入数据库时,core.autocrlf
告诉服务器git
对所有输入文件运行过滤器,以将CRLF行尾转换为LF。它必须在计算blob的哈希值之前执行此操作,因为更改后的每个字节都会影响哈希值(按定义)。
由于git hash-object
是用于执行此操作的管道命令,因此它也必须执行这些过滤器。如果要禁止这种情况,并在没有运行过滤器的情况下查找文件的哈希,则可以使用该--no-filters
选项。手册摘要:
-无过滤器
散列内容,而不考虑属性机制将选择的任何输入过滤器,包括行尾转换。如果从标准输入中读取文件,则始终隐含该文件,除非给出了--path选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句