使用GitHub与TeamCity时如何保留TXT文件换行符?
解决GitHub+TeamCity下TXT文件换行符丢失问题
嘿,这个换行符问题我太熟了——你遇到的是Git跨平台换行符处理的经典坑:Windows记事本只认CRLF(回车+换行),而Notepad这类编辑器兼容LF(仅换行),所以才会出现“Notepad显示正常,记事本里全挤成一行”的差异。
问题根源
Git默认会根据操作系统自动转换换行符:Windows上提交时把CRLF转成LF,拉取时再转回CRLF。但如果你的TeamCity或Git全局配置有冲突,就可能导致TXT文件最终只保留LF,让记事本“看不懂”换行。
完美解决方案:配置.gitattributes文件
你提到的.gitattributes方法是最可靠的——它能强制指定特定文件类型的换行符规则,不受全局Git配置影响。具体操作如下:
在仓库根目录创建
.gitattributes文件
打开Notepad++(别用记事本,避免提前踩坑),输入以下内容:*.txt eol=crlf这里用
eol=crlf比单纯写crlf更明确:它告诉Git,不管你的系统是什么,所有.txt文件提交和拉取时都强制使用CRLF格式。提交并推送
.gitattributes到GitHub
用Git命令或者GitHub桌面客户端把这个文件同步到远端:git add .gitattributes git commit -m "Enforce CRLF for TXT files via gitattributes" git push重新处理已提交的TXT文件
之前提交的TXT文件已经是LF格式了,需要让Git重新应用规则:# 让Git重新标准化所有文件的换行符 git add --renormalize . git commit -m "Renormalize TXT files to use CRLF" git push等TeamCity拉取最新代码后,TXT文件就会保持CRLF格式,Windows记事本就能正常显示换行了。
额外小贴士
- 检查TeamCity的配置,确保它没有覆盖Git的换行符规则,一般选“使用Git默认配置”就行。
- 之后新提交的TXT文件都会自动遵循
.gitattributes的规则,不用再手动调整啦。
内容的提问来源于stack exchange,提问作者E.Meir




