在我的具体情况下,我正在使用git-p4,我想知道git-p4是否在实际提交的对象本身中使用CRLF提交了文件。但总的来说,我想知道如何直接找出答案。换句话说,当我正常结账时,像core.autocrlf和.gitattributes这样的东西可以修改写入磁盘的内容;我想绕过它一秒钟。
答案 0 :(得分:1)
git show HEAD:file.txt > /tmp/here.txt && file /tmp/here.txt
或者使用pipe-fu来避免临时文件:
git show HEAD:file.txt | file -
其他可行的方法是git cat-file -p abcd2134 > temp_file.txt
,其中abcd1234是文件的对象哈希。无论输出是什么,都应该是所提交的逐字文本。我可以打开temp_file.txt并看看它的行结尾是什么(我用vim来做)。
如果您使用bash,则可以输入以下内容:
git cat-file -p `git ls-tree HEAD file.txt | sed 's/.* .* \(.\{40\}\).*$/\1/'` | tr "\r" '!!!!' | grep '!!!!' | wc -l
如果结果为0,则仅使用CR提交文件。如果结果大于零,则会出现“\ r”,这意味着它以dos格式(CRLF)提交。
有关反引号中部分的说明,请参阅How to get SHA of file for specific Git commit?。