13

我在 Windows 机器上使用 git 来处理pull我的代码。

当其他开发人员pull在他们的 liunx 机器上从服务器获取文件时,他们^M在第一行的末尾有 。

如何让 git 为我处理这个问题?

我的意思是,git当我(从我的窗口机器)推送服务器上的代码时,应该更改行的结尾(删除第一行末尾的 control+M 或 ^M)。

4

3 回答 3

21

这个 GitHub帮助页面处理这个非常具体的主题,并引导人们完成正确配置 Git 配置的步骤。

基本上,如果您使用的是 Mac/Linux,请使用

$ git config --global core.autocrlf input

如果您是 Windows 用户,请使用

$ git config --global core.autocrlf true

注意:这将在执行签出或提交时即时转换您的行尾,并确保您的文本文件在您的存储库中具有 LF 行尾,而在您的工作目录中具有本机行尾。

注意 2:这不会重写您的存储库的历史记录。回购中的现有提交将保持其潜在的混合行结尾。

注意 3:确保每个提交者在下一次提交之前执行此配置步骤。

存在一种替代方法,它不涉及强迫每个人更改他们的配置。它需要将特定的文件名.gitattributes添加到您的存储库。有关他的主题的更多信息,请参阅 git 官方gitattributes 文档

注 4:Tim Clem,一个 github,发表了一篇非常详细的博文(Mind the End of Your Line),关于行尾、相关的配置条目和 gitattributes 的好处。如果您愿意很好地掌握概念、“为什么”和内部机制,那么这绝对是必读的。

于 2012-02-10T19:16:46.887 回答
1

尝试将 设置 core.autocrlf为 true (参见git-config)。

于 2012-02-10T09:38:42.163 回答
0

这不是 GIT 的问题,而是最初创建/上传和存储文件的方式的问题。最好的解决方案是找到一个允许您将行尾类型设置为 unix 的编辑器。

这似乎有一种方法可以在 Windows 端使用 GIT,但我认为这通常是一种不好的方法

http://lostechies.com/keithdahlby/2011/04/06/windows-git-tip-hide-carriage-return-in-diff/

于 2012-02-10T09:38:52.897 回答