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

此版本的 GitHub Enterprise 将停止服务 此版本的 GitHub Enterprise 已停止服务 2019-07-12. 即使出现严重安全问题,也不会发布补丁。要获得更好的性能、更高的安全性和全新功能,请升级到 GitHub Enterprise 的最新版本。 要获取有关升级的帮助,请联系 GitHub Enterprise 支持部门

Configuring Git to handle line endings

To avoid problems in your diffs, you can configure Git to properly handle line endings.

Every time you press return on your keyboard you're actually inserting an invisible character called a line ending. 从历史上看,不同的操作系统处理行结束符的方式不同。

当您查看文件中的更改时,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 以正确处理行结束符

在 OS X 和 Linux 上,通常需要传递 input(输入) 以进行此设置。 在 Windows 上, 通常需要使用 true(真)。 例如:

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

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

按仓库设置

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

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

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

示例

以下是 .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。 我们将查看以下一些可能的设置。

<

dl>

text=auto
Git 将以其认为最佳的方式处理文件。 这是一个合适的默认选项。
text eol=crlf
在检出时 Git 将始终把行结束符转换为 CRLF。 您应将其用于必须保持 CRLF 结束符的文件,即使在 OSX 或 Linux 上。
text eol=lf
在检出时 Git 将始终把行结束符转换为 LF。 您应将其用于必须保持 LF 结束符的文件,即使在 Windows 上。
binary
Git 会理解指定文件不是文本,并且不应尝试更改这些文件。 binary 设置也是 -text -diff 的一个别名。

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

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

自动配置仓库行结束符的最佳方式,是首选使用 Git 备份文件,再删除仓库中的每个文件(除了 .git 目录),然后一次性恢复文件。

  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"

延伸阅读

问问别人

找不到要找的内容?

联系我们