git应该改变行的结尾吗? (控制+第一行末尾的M或^ M)

时间:2012-02-10 09:33:57

标签: git github github-api

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

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

如何让git为我照顾这个?

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

3 个答案:

答案 0 :(得分:17)

此GitHub help page 处理这个非常具体的主题,并通过以下步骤来正确配置您的Git配置。

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

$ git config --global core.autocrlf input

如果您是Windows用户,请使用

$ git config --global core.autocrlf true

注意:这会在执行结帐或提交时动态转换您的行结尾,并确保您的文本文件在您的存储库中具有LF行结尾,同时在您的行中有本机行结尾工作目录。

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

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

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

Note 4 :githubber的Tim Clem发布了关于行结尾的非常详细博客文章( Mind the End of Your Line ),相关配置条目和gitattributes的好处。如果你愿意理解概念,“为什么”和内部机制,那绝对必须阅读。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

这似乎有一种方法可以在Windows上使用GIT进行操作,但我认为这样做是一种不好的方法

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