Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
GIT
使用 git 拉取的代码竟然出问题了
发布于 2021-12-01 09:43:34 浏览:791
订阅该版
[tocm] ### 引言 在做嵌入式 Linux 开发的的程序员,不乏在 Windows 环境下编写代码,然后再复制到 Linux 系统中进行编译。代码托管或者版本管理绝大部分使用 git。 这样的开发流程,相信很多开发者在用:从 git 拉取代码到 Windows 系统中,添加或修改代码后,复制到 Linux 中进行编译,然后再下载到目标板运行。 然而,本来应该是正常的开发,却遇到了问题。 ### 问题描述 某个项目需要添加新的功能,便从 git 服务器上拉取已有的工程代码到 Windows 系统进行开发。修改完代码之后,复制到 Linux 虚拟机进行编译,却发现报错了,编译不通过。 当时觉得很奇怪,已经上线的程序,竟然会编译失败。经过一些列的对比查找,发现了一些端倪,代码文件真的不一样! 在 Linux 系统中打开工程文件,发现每行的结尾有特殊符号 “^M”。由此考虑,应该是文件换行符不一致引起的错误。这个特殊的换行符,使得工程中有些关键脚本文件执行失败,从而导致工程编译失败或者目标程序执行异常。 为什么会出现特殊符号 “^M” 呢? ### 问题原因 不同操作系统的换行符是不一样的。Unix/Linux 系统使用的是 LF 用作换行符;Windows 一直使用的 CRLF(即,回车 CR和换行 LF)作为换行符。将 Windows 系统下的文件,在Linux 下打开,就会在每行的末尾显示 “^M”。 然而, git 入库的代码采用的是 LF 格式换行。 为了实现跨平台的写作,git 提供了 “换行符自动转换” 功能。如果在 Windows 安装 git,在拉取文件时,会自动将 LF 换行符替换为 CRLF:在提交时,又会将 CRLF 转化为 LF。 ### 问题解决 解决问题的方法是:禁用 git 的换行符自动转换功能。 **解决方法一** 修改 git 的本地配置文件。在本地路径 C:\Users\\[用户名]目录下,找到配置文件 .gitconfig,在 “[core]” 下添加如下内容: ``` autocrlf = false filemode = false safecrl = true ``` **解决方法二** 通过命令行修改 git 的配置: ``` /* 不转换换行符 */ git config --global core.autocrlf false /* 忽略文件权限修改 */ git config --global core.filemode false /* 允许提交包含混合换行符的文件 */ git config --global core.safecrlf true ```
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
zppsky16
公众号【一起学嵌入式】,RTOS、Linux、C/C++
文章
7
回答
5
被采纳
0
关注TA
发私信
相关文章
1
用GIT GUI的时候每次PUSH都要手动填一遍目标仓库地址?
2
git上面的图片加载不出来,有其他可以看BSP 制作教程的方法吗
3
gitee这几个版本怎么分别
4
packages 的 git失败
5
软件包的镜像地址怎么找呢
6
关于tortoisegit的push操作
7
RTT Studio 内置git 推送不到远程gitee仓库
8
git软件包失败下载失败,找不到CA路径?
9
studio内置的git该如何使用
10
RT-Thread studio的git功能可以直接使用吗?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
4
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部