git 换行问题_Git 处理换行符问题

PS:最近又换回了 Linux Mint,作为一个 Linux 桌面黑,有点尴尬。。。:)

换行符是 *nux 与 Windows 系及其他系的各种不兼容问题的代表之一,于是,在不同平台使用 Git 时经常碰到 git status 列出一大串修改过的文件,git diff 查看一下其实只是换行符问题。不多扯了,直接上解决方案:

方案1: 增加 .gitattribute 文件

在 repo 目录下新建 .gitattribute 文件,内容为:

* text eol=lf

方案2: 修改 Git 配置

git config --global core.autocrlf false

git config --global core.safecrlf true

如果只需要修改当前仓库,去掉 --global。

方案3: 行政命令

下令:一律使用 unix 换行符,违者男的穿裙子,女的不许穿!

参考:

问题:

Windows 下使用 git 没问题,在 Cygwin 中出现文件全部被修改问题。运行 git diff 看到变化是 ^M,即 Linux 与 Win 的换行符区别。

解决:

git config --global core.autocrlf true

关于换行符 Git 有两个重要的配置,如下:

换行符的问题 autocrlf and safecrlf

Windows(rn)、Linux(n)和MacOS(r)三个主流系统的换行符各不相同,这样在跨平台合作的时候就容易出现换行符的问题。

Git 提供了 autocrlf 和 safecrlf 两个参数来解决这个问题。但这两个参数如果没用好,就会影响开发。

例如,出现这种情况:

A和B两个开发人员,A使用LF(n)做换行符,B使用CRLF(rn)做换行符,且都没有开启 autocrlf 参数,那么A在迁出B的文件,并使用自己的编辑器打开之后就会发现,虽然没有对文件做任何修改,但它的状态是modified。这是由于A的编辑器自动将B的文件中的所有换行符替换成了(LF),这与版本库中的(CRLF)不同。

让我们来看看 autocrlf 参数的作用:

# 签出时将换行符转换成CRLF,签入时转换回 LF。

git config --global core.autocrlf true

#签出时不转换换行符,签入时转换回 LF

git config --global core.autocrlf input

#签出签入均不转换

git config --global core.autocrlf false

这些选项在TorgoiseGit中也可以设置。

我的建议是在无论在什么系统下编程,都把所有人的编辑器的换行符模式设置成Unix格式,然后把autocrlf设置成false,这样一劳永逸。

毕竟除了Windows记事本这类软件外,已经很少有文本编辑器不支持换行符设置了。

如果你把换行符搞乱了,在一个文件中既包含windows风格的换行符也包含unix风格换行符,那么 safecrlf 就可以发挥作用了:

# 拒绝提交包含混合换行符的文件

git config --global core.safecrlf true

# 允许提交包含混合换行符的文件

git config --global core.safecrlf false

# 提交包含混合换行符的文件时候给出警示

git config --global core.safecrlf warn

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值