我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

此版本的 GitHub Enterprise 将停止服务 此版本的 GitHub Enterprise 已停止服务 2020-01-22. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

配置 Git 处理行结束符

为避免差异中出现问题,可配置 Git 正常处理行标题。

本文内容

每次在键盘上按 return 时,实际会插入一个名为行结束符的不可见字符。 从历史上看,不同的操作系统处理行结束符的方式不同。

当您查看文件中的更改时,Git 会以自己的方式处理行结束符。 由于您正在使用 Git 和 GitHub Enterprise 协作处理项目,Git 可能产生意外结果,例如,您正在 Windows 机器上工作,而您的协作者在 OS X 中进行了更改。

行结束符的全局设置

git config core.autocrlf 命令用于更改 Git 处理行结束符的方式。 它将采用单一参数。

在 OS X 上,只需将 input(输入)传递给配置。 例如:

$ git config --global core.autocrlf input
# 在 OS X 上配置 Git 以正确处理行结束符

在 Windows 上,只需将 true(真)传递给配置。 例如:

$ git config --global core.autocrlf true
# 在 Windows 上配置 Git 以正确处理行结束符

在 Linux 上,只需将 input(输入)传递给配置。 例如:

$ git config --global core.autocrlf input
# 在 Linux 上配置 Git 以正确处理行结束符

按仓库设置

可选择通过配置特殊 .gitattributes 文件,配置 Git 按仓库管理行结束符。 提交文件到仓库,然后覆盖个别 core.autocrlf 设置,确保所有用户的行为一致,无论其 Git 设置如何。 .gitattributes 文件的优势是行配置与仓库关联。 您无需担心协作者是否采用了相同的行结束符设置。

.gitattributes 文件必须在仓库的根目录下创建,且像任何其他文件一样提交。

.gitattributes 文件看上去像一个两列表格。

  • 左侧是 Git 要匹配的文件名。
  • 右侧是 Git 应对这些文件使用的行结束符配置。

示例

以下是 .gitattributes 文件示例。 您可以将其作为模板用于您的仓库:

# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text

# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary

您会注意到文件匹配--*.c, *.sln, *.png--,以空格分隔,然后被给予设置--text, text eol=crlf, binary。 我们将查看以下一些可能的设置。

`text=auto`
Git 将以其认为最佳的方式处理文件。 这是一个合适的默认选项。
`text eol=crlf`
Git will always convert line endings to `CRLF` on checkout. You should use this for files that must keep `CRLF` endings, even on OSX or Linux.
`text eol=lf`
Git will always convert line endings to `LF` on checkout. 您应将其用于必须保持 LF 结束符的文件,即使在 Windows 上。
`binary`
Git 会理解指定文件不是文本,并且不应尝试更改这些文件。 The `binary` setting is also an alias for `-text -diff`.

在更改行结束符后刷新仓库

设置 core.autocrlf 选项和提交 .gitattributes 文件后,可能会发现 Git 希望您提交未修改的文件。 此时,Git 急需为您更改每个文件的行结束符。

The best way to automatically configure your repository's line endings is to first backup your files with Git, delete every file in your repository (except the .git directory), and then restore the files all at once.

  1. 在 Git 中保存当前文件,以便不会丢失任何工作。

    $ git add . -u
    $ git commit -m "Saving files before refreshing line endings"
  2. 添加回所有已更改的文件,然后标准化行结束符。

    $ git add --renormalize .
  3. 显示已重写的标准化文件。

    $ git status
  4. 将更改提交到仓库。

    $ git commit -m "Normalize all the line endings"

延伸阅读

问问别人

找不到要找的内容?

联系我们