java lf_git用CRLF代替LF

使用bash在Windows XP计算机上运行git。 我从SVN导出了我的项目,然后克隆了一个裸存储库。

然后我将导出粘贴到裸存储库目录中,并执行了:

git add -A

然后我得到一条消息列表:

LF将由CRLF取代

这种转变的后果是什么? 这是Visual Studio中的.NET解决方案。

#1楼

从〜/ .gitattributes文件中删除以下内容

* text=auto

将阻止git在第一位检查行结尾。

#2楼

在Notepad ++中打开文件。

转到编辑/ EOL转换。

单击“Windows格式”。

保存文件。

#3楼

我对Windows上的git知之甚少,但......

在我看来,git正在转换返回格式以匹配正在运行的平台(Windows)。 CRLF是Windows中的默认返回格式,而LF是大多数其他操作系统的默认返回格式。

有可能,当代码移动到另一个系统时,返回格式将被正确调整。 我还认为git足够聪明,可以保持二进制文件的完整性,而不是试图将LF转换为CRLF,例如JPEG。

总之,您可能不需要为此转换烦恼太多。 但是,如果你将项目归档为tarball,那么编码人员可能会喜欢使用LF线路终结器而不是CRLF。 根据您的关注程度(并且取决于您不使用记事本),如果可以,您可能需要设置git以使用LF返回:)

附录:CR是ASCII码13,LF是ASCII码10.因此,CRLF是两个字节,而LF是一个。

#4楼

Git有三种处理行结尾的模式:

$ git config core.autocrlf

# that command will print "true" or "false" or "input"

您可以通过向上面的命令行添加其他参数true或false来设置要使用的模式。

如果core.autocrlf设置为true,这意味着core.autocrlf将文件添加到git repo中git认为是文本文件时,它会将所有CRLF行结尾转换为LF,然后再将其存储在提交中。 每当你git checkout东西,所有文本文件自动将其LF行结尾转换为CRLF结尾。 这允许跨平台开发项目,这些平台使用不同的行结束样式而不提交非常嘈杂,因为每个编辑器都会更改行结束样式,因为行结束样式始终是LF。

这个方便转换的副作用,这就是你所看到的警告,就是如果你最初创作的文本文件有LF结尾而不是CRLF,它将像往常一样用LF存储,但是当检查时以后它会有CRLF结局。 对于普通文本文件,这通常很好。 在这种情况下,警告是“为了您的信息”,但是如果git错误地将二进制文件评估为文本文件,则这是一个重要的警告,因为git会破坏您的二进制文件。

如果core.autocrlf设置为false,则不会执行任何行结束转换,因此将按原样检入文本文件。 这通常可以正常工作,只要所有开发人员都在Linux上或在Windows上都是如此。 但根据我的经验,我仍然倾向于获得具有混合行结尾的文本文件,最终导致问题。

我个人的偏好是作为Windows开发人员打开设置。

#5楼

这些消息是由于Windows上core.autocrlf默认值不正确造成的。

autocrlf的概念是透明地处理行结束转换。 它确实如此!

坏消息:需要手动配置值。

好消息:每个git安装应该只进行一次(每个项目设置也可以)。

autocrlf如何工作 :

core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:

repo repo repo

^ V ^ V ^ V

/ \ / \ / \

crlf->lf lf->crlf crlf->lf \ / \

/ \ / \ / \

这里crlf = win-style end-of-line marker, lf = unix-style(和mac osx)。

(pre-osx cr不受上述三种选择中的任何一种影响)

该警告何时显示(在Windows下)

- 如果你的一个文件中有unix-style lf (= RARELY),则autocrlf = true ,

- autocrlf = input ,如果你有赢风格crlf在文件中的一个(=几乎总是)

- autocrlf = false - 从来没有!

这个警告意味着什么

警告“ LF将被CRLF替换 ”说你(具有autocrlf = true )将在提交 - 结账周期后丢失你的unix风格的LF(它将被windows风格的CRLF取代)。 Git不希望你在windows下使用unix风格的LF。

警告“ CRLF将被LF替换 ”表示您(具有autocrlf = input )将在提交结帐周期后丢失您的Windows样式的CRLF(它将被unix样式的LF替换)。 不要在windows下使用input 。

另一种展示autocrlf如何工作的方法

1) true: x -> LF -> CRLF

2) input: x -> LF -> LF

3) false: x -> x -> x

其中x是CRLF(windows风格)或LF(unix风格),箭头代表

file to commit -> repository -> checked out file

怎么修

在git安装期间选择了core.autocrlf默认值,并将其存储在系统范围的gitconfig( %ProgramFiles(x86)%\\git\\etc\\gitconfig )中。 还有(按以下顺序级联):

- 位于~/.gitconfig “global”(每用户) ~/.gitconfig ,另一个

- $XDG_CONFIG_HOME/git/config global( $XDG_CONFIG_HOME/git/config或$HOME/.config/git/config )中的“全局”(每用户)gitconfig

- 工作目录中.git/config “local”(per-repo)gitconfig。

因此,在工作目录中编写git config core.autocrlf来检查当前使用的值和

- 将autocrlf=false添加到系统范围的gitconfig#per-system解决方案中

- git config --global core.autocrlf false #per-user solution

- git config --local core.autocrlf false #per-project solution

警告

- git config设置可以被gitattributes设置覆盖。

- crlf -> lf转换仅在添加新文件时发生,回购中已存在的crlf文件不受影响。

道德 (适用于Windows):

- 如果您计划在Unix下使用此项目(并且不愿意将编辑器/ IDE配置为使用unix行结尾),请使用core.autocrlf = true ,

- 如果您计划仅在Windows下使用此项目(或者您已将编辑器/ IDE配置为使用unix行结尾),请使用core.autocrlf = false ,

- 永远不要使用core.autocrlf = input除非你有充分的理由( 例如,如果你在windows下使用unix实用程序或者遇到makefile问题),

PS 安装适用于Windows的git时要选择什么?

如果您不打算在Unix下使用任何项目, 请不要同意默认的第一个选项。 选择第三个( Checkout as-is,commit as-is )。 你不会看到这条消息。 永远。

PPS我个人的偏好是配置编辑器/ IDE以使用Unix风格的结尾,并将core.autocrlf设置为false 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值