obsidian/笔记文件/2.笔记/git提交或拉取时换行符不一致导致 提示 the text is identical, but the files do not match, newlines 等字样.md
2025-03-26 00:02:56 +08:00

2.5 KiB
Raw Permalink Blame History

#杂七杂八常识

!Pasted image 20230612175814.png

首先普及下基本知识:

   CRLF是Carriage-Return Line-Feed的缩写意思是回车换行就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。换行在有的ASCII码表也用newline简nl来进行表示,这里的lf是line feed的概念意思是一样的

   CRLF ----------   '\n\r'          回车换行

   CR     ----------    '\n'            回车

   LF      ----------    '\r'             换行

window unix mac 等平台,换行符的不同:

系统

换行符

windows

\n\r

unix

\n

mac

\r

  假如你正在Windows上写程序又或者你正在和其他人合作他们在Windows上编程而你却在其他系统上在这些情况下你可能会遇到行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行而Mac和Linux只使用换行一个字符。虽然这是小问题但它会极大地扰乱跨平台协作。

   Git可以在你提交时自动地把行结束符CRLF转换成LF而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能如果是在Windows系统上把它设置成true这样当签出代码时LF会被转换成CRLF有以下几种方案
    1. 在安装“Git for windows”的时候在“Configuing the line ending conversions”页面将默认选中改为“Checkout as-is, commit as-is”
 
    2. 如果已经安装过了也可以通过命令行修改打开“Git Bash”然后输入
        $ git config --global core.autocrlf input
 
    3.也可以在“Git Bash”中修改~/.gitconfig文件加入或修改
        [core]
                autocrlf = input
 
    4.如果使用TortoiseGit可以在setting的Git配置中选择Global模式取消选中“AutoCrlf”然后保存配置
1> AutoCRLF
	#提交时转换为LF检出时转换为CRLF
	git config --global core.autocrlf true   
 
	#提交时转换为LF检出时不转换
	git config --global core.autocrlf input   
 
	#提交检出均不转换
	git config --global core.autocrlf false
	
2>SafeCRLF
	#拒绝提交包含混合换行符的文件
	git config --global core.safecrlf true   
 
	#允许提交包含混合换行符的文件
	git config --global core.safecrlf false   
 
	#提交包含混合换行符的文件时给出警告
	git config --global core.safecrlf warn

测试在config文件写入这字段好使

        [core]
                autocrlf = false