探索TFS Git 库文件换行(CRLF)的处理方式

VScode 中 CRLF 和 LF 兼容问题,报错原因及解决方案 多方案解决 VScode 中 CRLF 和 LF 兼容问题 阅读详情

(2018.12.29 更新,增加Git处理方式)

在计算机的技术中,所有文本信息都会涉及换行的问题。例如,你在键盘上敲击一次Enter(回车)键,系统将在文本重增加一行,实际上系统已经在文件中插入了一个不可见的换行标记。

换行,在许多地方也称为行尾(line ending),或者EOL(end of line)。换行是一个特殊的字符,在文本中用于表示一行文字信息的结束,或者新一行文字信息的开始。由于在不同的平台或操作系统中,系统处理换行的方式不一样,如果开发人员忽略换行问题,会导致源代码编译或者运行过程中出现异常的问题。

下面我们结合TFS系统的源代码管理功能,具体分析在代码管理过程中,如何处理文件换行的问题。

换行类型CRLF, CR, LF

最早在电传打印机上,工程师使用CR(Unicode字符为000D)和LF(Unicode字符为000A)标记打印换行。CR是单词Cartridge Return的缩写,我们经常称为回车;LF是单词Line Feed的简称,我们经常称为换行。这两个字符分别用来指挥打印机的针头移到下一行,同时将打印纸张先前推进一行。后来由于计算机技术的飞速发展,计算机与打印机高度集成,打印换行的概论也被计算机广泛引用。但是,不同的操作系统,对于换行的处理方式不一样。

  • 微软 Windows:CRLF

微软基本原样照搬了早期打印机的机制,使用两个字符CR+LF来标记文件的换行。Windows,MS-DOS,PC-DOS等采用了CRLF的换行方式。

  • Unix/Linux:LF

Unix操作系统觉得微软比较浪费,在自己的系统中,一个字符LF就可以达到目的,于是Linux上面就使用LF来标记换行。基于Linux的其他操作系统,基本都采用了LF的换行方式。

  • 苹果 Mac

苹果的计算机的科学家由于更为复杂的原因,定义CR作为换行标记。

TFVC处理方式

在TFVC代码库中,无论从使用哪种客户端签入签出,TFS服务器都会原样保留文件的换行模式。

你可以在文本编辑工具中验证从TFS中下载的文件,如下图,我使用EditPlush验证一个sh脚本程序的换行格式:

image

Figure 1 - 在EditPlush中查询文件的换行格式

Git处理方式

Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)

别再被空格和换行符骗了!Beyond Compare 4 关联规则设置,让代码对比只关注核心逻辑 本文详细介绍了Beyond Compare 4的高级关联规则设置,帮助开发者过滤代码对比中的无关差异(如空格、换行符等),专注于核心逻辑变更。通过实战配置指南、版本控制系统集成方案和团队标准化建议,大幅提升代码审查效率,减少格式争议,让团队协作更加高效。 阅读详情

相关推荐

保姆级教程:彻底清理Win11更新缓存并解除外设,一次搞定0xc1900101更新错误

本文提供了一套完整的Win11更新报错0xc1900101解决方案,涵盖软件环境净化和硬件设备隔离。通过终止干扰进程、重置更新组件、清理临时文件以及断开外设等步骤,有效提升更新成功率。特别强调外设驱动兼容性对解决0xc1900101错误的关键作用。

weixin_33483304的博客 420

EditPlus 换行

今天在使用EditPlus弄css文件时候没有自动换行,如果只是使用快捷键Ctrl+Shift+W或者使用文档→自动换行,的话,关闭软件之后再次打开时就会重新出现不能自动换行的问题。上网找了下,不过找到的是中文版的,我自己用的是英文版的。   中文版的是:文档→固定值设置(文档 菜单的最后一个),会打开一个“工具→首选项”的设置对话框,在这个对话框里设置自动换行就行了。   英文版的是:Doc...

weixin_34367845的博客 208

网络安全实战:从Wireshark到BurpSuite的抓包技巧解析

本文深入解析了Wireshark和BurpSuite在网络安全抓包中的实战技巧,从基础对比到高级过滤、核心模块应用及安全测试避坑指南。通过详细的操作步骤和案例分析,帮助读者掌握数据包抓取与分析的核心技能,提升网络安全防护能力。

weixin_29207533的博客 574

notepad++ 出现CRLF等字符

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34252090的博客 7219

5种主流触觉传感器对比:GelSight、DIGIT、Taxim、GelSlim和TACTO怎么选?

本文深度对比了GelSight、DIGIT、Taxim、GelSlim和TACTO五种主流触觉传感器的技术原理与应用场景。针对机器人及VR项目的选型需求,文章从光学与电子传感的技术分野出发,分析了各传感器在分辨率、响应速度、集成难度和成本上的核心差异,并提供了从需求出发的实战选型决策框架,帮助开发者找到最适合的触觉解决方案。

weixin_29268637的博客 699

《生成式AI引发的“认知污染”:社交媒体虚假信息的治理困局》

认知污染与生成式AI“认知污染”指信息环境被大量虚假、误导性内容所充斥,干扰公众对事实的认知判断。在社交媒体时代,虚假信息的生产和传播门槛大幅降低,呈现出工业化、规模化的趋势。近年兴起的生成式人工智能(Generative AI)技术,如大型语言模型(LLM)和深度伪造(deepfake),更是加剧了这一问题。AI可以自动生成看似真实的文本、图像、音视频,将虚假信息批量生产并快速散播到社交平台上。

那谁的博客 5915

windows使用git时出现:warning: LF will be replaced by CRLF如何解决?

windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示, 进入目标仓库的最上层目录执行: ``$ git config core.autocrlf false 后面就可以提交代码了。 ...

一个不成器的学者 219

vue2 - 实现移动端H5网页调用手机相册选取图片或打开摄像头相机拍照上传,如何在h5网站浏览器中打开本机相册或相机选择相片,H5调用本地相册/相机上传图片详细教程(附图片压缩功能及上传服务器示例)

vue2手机H5网页,调起安卓苹果ios手机相册和相机,H5实现调用手机摄像头相册实现图片压缩预览删除,vue项目调用摄像头和相册,H5调用手机摄像头,实时拍照上传,VUE2 H5页面如何唤起手机摄像头拍照上传,H5调起手机端的摄像头,html5调用手机摄像头,实现H5调起手机相机和相册,vue H5拍照上传,手机网站浏览器移动端调取相机或相册,实现拍照上传功能,解决苹果ios手机无法打开相册相机问题,无法唤起摄像头怎么办,调取本机系统的相册,vue h5网页调用相机拍照和相册,实现多张图片上传功能,图片压

✅ 精选推荐文章 1万+

git 换行问题_git 换行符问题

最近在windows下使用Git,发现不时没有修改过的文件要提交,对比发现文件全部修改,但找不到不一样的地方,Baidu后怀疑是换行符的问题,因为Windows和Linux的换行符不一样,这个和git客户端配置有关系,如果每个人客户端配置不一样同样会出现该问题.关于不同系统的换行符问题:UNIX/Linux :0x0A(LF),Mac OS:0x0D(CR),后来的 OS X 在更换内核后与 ...

weixin_39524959的博客 723

文献综述三大痛点用AI轻松解决!借助Gemini 3 Pro搞定检索难、阅读慢、框架乱问题(附 AI 提示词)

4)“漏斗式”结构:先介绍宏观领域的研究现状,再缩小范围,聚焦于与你课题直接先关的子领域,深入探讨与你研究变量直接相关的文献, 指出前人没做过、没做全或结论有矛盾的地方,再顺势提出你的研究课题,这种结构逻辑最清晰,能直接引导读者发现你研究的必要性。想要有针对性的搜到相关文献,必须先把模糊的研究题目拆解成精准的检索语言,这个时候就需要建立一个关键词矩阵,如核心词、同义词、学术术语、上下位词,以及对应的英文表达。请围绕【我的研究主题/关键词】,检索近5年发表的高被引的中英文文献,优先选择顶刊综述/论文。

智能AI让学术科研更容易 277

下载猫 —— 会员体系安全分析与加固方案

下载猫的会员验证体系完全失效,破解不需要任何工具链、不需要写代码、不需要改文件。已验证的成功攻击路径:攻击者启动软件时加一个参数,然后用 3 行 JavaScript 即可将会员状态改为"有效期至 2099 年",全部功能闸门放行。等价于普通用户按F12打开控制台输入 3 行代码,全程不到 10 秒。项目结论破解难度⭐ 极低(会按 F12 即可,无需任何破解工具)是否修改文件否(重启软件自动恢复)是否需要服务器否是否影响其他用户单人即可完成,可复制分发修复所需工作量。

猫敷雪 60

Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)

之前写过一篇博客“探索TFS Git 库文件换行(CRLF)的处理方式”,主要是针对TFVC代码库的。下面这篇文章说明如何在TFS的Git库中处理代码换行的问题。概述 在Azure DevOps Server(之前叫TFS) 中使用Git管理源代码,需要特别注意代码文件的换行处理。我们在许多团队碰到这样现象,开发人员在自己的Windows 中使用Eclipse 或者Visual Studi...

Azure DevOps Server(原名TFS) 200

硬件知识点-----SPI串联电阻、振铃、过冲

电阻取值,没有公式,一被传输线的特征阻抗为50欧姆左右,而TTL电路输出电阻大桃为13欧姆左右,在源端串一个33姆,大致和50相当,这样就可以柳制从终端反射回来的倍号,防止再次反射。传输时间tp=L/V,其中L是导线长度,V是电磁波在电路板中的传输速度V=C/sqrDk,其中Dk是光速衰减因子,对于电路板而言是铜线,Dk=4电磁波在电路板中的速度都是慢于光速的。实际上串联多大的电阻与传输线的阻抗有关,为了保证阻抗的连续性,如果传输线的特性阻抗 Z0与驱动源的输出阻抗 Zd不匹配,会引发信号的反射。

贾saisai的博客 2724

azure devops中文显示乱码_Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)...

下面这篇文章说明如何在TFS的Git库中处理代码换行的问题。概述在Azure DevOps Server(之前叫TFS) 中使用Git管理源代码,需要特别注意代码文件的换行处理。我们在许多团队碰到这样现象,开发人员在自己的Windows 中使用Eclipse 或者Visual Studio 编写和调试代码,功能都正常。但是,使用TFS 的自动生成和发布功能,将源代码下载到Linux 或 AIX等非...

weixin_39836860的博客 381

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

git常见问题记录

本文介绍了Git使用中的三个常见问题及解决方法。首先讲解了修改远程仓库地址的两种方式:直接修改.git/config文件或使用git remote命令。其次说明了更改.gitmodules后需要执行git submodule sync和update命令使修改生效。最后针对多平台换行符差异问题,提供了三种解决方案:使用dos2unix工具、sed命令删除回车符,或配置Git的自动换行策略,并给出了验证方法。这些技巧能有效解决Git跨平台协作中的常见问题。

李白 4557

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

git爬坑之创建github项目

臭猪猪@DESKTOP-296NPPH MINGW64 /d/myGithub/topology-demo (master) $ git add README.md warning: LF will be replaced by CRLF in README.md. The file will have its original line endings in your working di...

飞鸿的博客 1055

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

git的理论、使用以及项目搭建

Git 学习git之前,我们先需要明白一个概念,版本控制! 版本控制 什么是版本控制?版本迭代,新的版本!版本管理器 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。 实现跨区域多人协同开发 追踪和记录一个或者多个文件的历史记录 组织和保护你的源代码和文件 统计工作量 并行开发,提高开发效率 跟踪记录整个软件的开发过程 减轻开发人员的负担,节约时间,同时降低人为错误 简单说就是

ZXLzhuzhu的博客 427

g4e基础篇#3 Git安装与配置

g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索。 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git 分布式版本控制系统的优势 Git 安装和设置 初始化Git存储库(Repo) 起步 1 – 创建分支和保存代码 起步 2 – 了解Git历史记录 起步 3 – 拉...

weixin_30698297的博客 175

Git安装全攻略:从零配置到避坑指南,新手必看

版本控制系统是现代软件开发的基础设施,它通过记录代码的每一次变更,实现了团队协作与历史回溯。其核心原理在于追踪文件变化、管理分支合并,从而保障代码的完整性与可追溯性。掌握版本控制不仅提升个人开发效率,更是团队工程实践的基石。在实际开发中,从环境配置到日常提交,每一步都影响着工作流的顺畅度。本文将聚焦于Git的安装与初始配置,针对Windows、macOS和Linux系统提供详细方案,并深入解析换行符处理、环境变量设置等常见陷阱,帮助开发者搭建稳定高效的版本控制环境,为后续的代码管理打下坚实基础。

weixin_28840143的博客 252

Git Tool Part 1

最近来了一些newguys,版本控制工具全部开始迁移到Git上来.原来都是老CVS或SVN的用户. 所以打算把内部Wiki上比较两篇粗糙Git的入门文章操作重写一遍.在本篇中全面解析git概念和基础使用方法. 在写的这篇文章时.在思考.应该如何快速切入理解Git的基本使用?相对Linux操作系统下分布式版本控制工具.很多操作中都直接采用命令的方式来做.可更多Windows 开发人员习惯的是直观的...

weixin_34220179的博客 111
上一篇: Get User CustomNotificationAddresses
下一篇: 为上海莫大型重工企业提供基于TFS的软件研发流程管理培训
Azure DevOps
博客等级 码龄6年 219粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值