如何使用Git清理行尾标识符

7

我在Git方面经验不太丰富,这个问题困扰着我:

我刚刚将工作副本切换到另一个分支(只需执行git checkout master),然后立即运行git status,它告诉我有数百个文件已更改。 但是,这都与换行符有关;我的git diff --ignore-space-at-eol给了我很多警告:

warning: CRLF will be replaced by LF in src/.../somefile.js.
The file will have its original line endings in your working directory.

我认为在版本控制的文本文件中使用DOS风格的换行符通常是不好的,但这就是它们在第一次提交时的样子。我是在Linux环境下进行的操作,所以得到的文件有CRLF换行符。

在我的情况下,最好的清理方法是什么?我应该更改每个文件的换行符并提交吗?

如何配置Git以避免将来出现这种情况?


1
正如已经提到的,Git 可以通过 core.autocrlf 设置在提交时自动处理行尾问题。这个 问题 有一个很好的答案,可以帮助您决定是否使用该选项。 - miqh
可能是Force LF eol in git repo and working copy的重复问题。 - Chowlett
好的,第二部分已经得到回答 - 在我看来,在许多地方都有解决方法。至于我问题的第一部分,似乎没有其他解决办法,只能提交经过处理的数据(CRLF文件来自克隆的Github存储库),并希望一切顺利。 - Tobias
2个回答

2

根据您的操作系统,尝试以下其中一种:

// Windows
git config --global core.autocrlf true

// Linux, OSX
git config --global core.autocrlf input

我尝试了它(Linux版本,包括使用和不使用“--global”选项),并切换到另一个分支,然后再切回来(git checkout -f ...),但似乎对我的工作副本来说已经太晚了... 我应该完全删除它并重新克隆吗? - Tobias
我很惊讶git没有立即找出来。但如果这是您拥有的选项,那么(安全地)尝试一下。 - yamafontes
可能是因为Git版本的问题吗?这是一个Debian盒子,我有Git v1.7.10.4,而1.8.4.1是当前版本。 - Tobias

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接