如果这是重复的,请指出。
我遇到的问题是,在从存储库克隆后,git status
表示大量文件已经更改。我没有改变一件事;我只是从回购克隆。问题是CRLF与LF线结束。
相关事实:
repo是在Unix机器上运行古老版本的git,版本1.7.1。
回购邮件是通过Eclipse插件从使用CRLF行结尾的机器填充的,并且有一个现代版本的git(确切的版本号未知)。
我的机器使用LF线路结尾,并有一个现代版本的git,版本2.3.0。
克隆回购时,所有文本文件都有CRLF行结尾。没关系;我的机器可以尊重。不合适的是git status
表示每个文本文件都已更改。这是无法接受的;我还没有改变一件事。
我可以在我的机器和repo机器上控制git config和git属性。我无法控制repo机器上的git版本,或者在使用CRLF行结尾的机器上如何使用git。
问题:
什么设置,无论是在本地还是在repo上,都可以让我克隆该回购并让git status
说什么都没有改变?
的更新
请不要告诉我:
使用git config --global core.autocrlf <value>
请不要告诉我有两个原因。
一个原因是即使它确实有效,这也不是我想要的解决方案。我的大部分用例都涉及使用LF而不是CRLF行结尾的机器的人。不知怎的,那些令人讨厌的CRLF系列结局设法潜入其中(这是颠覆的一个大问题)。现代版本的git在萌芽状态下解决了这个问题。在这种情况下,我正在与一个以CRLF为中心的行业合作的人打交道。这一例是例外,而不是规则。请不要告诉我使用git config --global
来处理这种特殊情况。
另一个原因是它不起作用。我已经尝试过了。我已经尝试了很多东西,但我总是git status | grep modified: | wc -l
是一个很大的数字。它应该为零。
答案 0 :(得分:1)
如果全局或本地core.autocrlf设置未获得所需的结果,则可以设置git line结束属性并强制查找要查找的结果。
# Set eol conversions on all text-based files to 'nothing'
echo '* text' >> .gitattributes
# Force git to re-scan dir
rm .git/index
git reset
# Review current files
git status
注意:通常情况下,eol设置为:
* text=auto