【问题标题】:How to clean up line-endings with Git如何使用 Git 清理行尾
【发布时间】:2013-10-21 07:51:34
【问题描述】:

我对 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 以避免将来出现此类情况?

【问题讨论】:

  • 如前所述,Git 能够使用core.autocrlf 设置自动处理提交时的行尾问题。这个 question 有一个很好的答案,可以帮助您确定该选项是否适合您。
  • 好的,第二部分已经回答了——在很多地方,正如我所见。至于我的问题的第一部分,似乎没有解决方案,只能提交经过清理的数据(CRLF 文件来自克隆的 Github 存储库)并希望最好。

标签: git eol


【解决方案1】:

尝试其中一种(取决于您的操作系统):

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

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

【讨论】:

  • 我试过了(Linux 版本,有和没有--global)并切换到另一个分支并再次返回(git checkout -f ...),但对于我的工作副本来说似乎为时已晚...我应该完全杀死它并重新克隆它吗?
  • 我很惊讶 git 没有马上弄清楚。但如果这是您的选择,那么(安全地)尝试一下。
  • 可能是因为 Git 版本?这是一个 Debian 盒子,我有 Git v1.7.10.4,而 1.8.4.1 是当前版本。
【解决方案2】:

正如我mentioned before,我更喜欢:

无论您选择哪种解决方案,请查看“Trying to fix line-endings with git filter-branch, but having no luck”来修复您当前的索引。
特别是,测试removal of the .git/index file,然后是git reset

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2011-10-27
    • 1970-01-01
    • 2013-06-21
    相关资源
    最近更新 更多