【发布时间】:2013-12-27 17:05:25
【问题描述】:
在我的具体情况下,我使用的是 git-p4,我想知道 git-p4 是否在实际提交的对象本身中使用 CRLF 提交了文件。不过,总的来说,我想知道如何直接找出答案。换句话说,当我正常结帐时,诸如 core.autocrlf 和 .gitattributes 之类的东西可以修改写入磁盘的内容;我想暂时绕过它。
【问题讨论】:
标签: git line-endings
在我的具体情况下,我使用的是 git-p4,我想知道 git-p4 是否在实际提交的对象本身中使用 CRLF 提交了文件。不过,总的来说,我想知道如何直接找出答案。换句话说,当我正常结帐时,诸如 core.autocrlf 和 .gitattributes 之类的东西可以修改写入磁盘的内容;我想暂时绕过它。
【问题讨论】:
标签: git line-endings
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?。
【讨论】: