这是由于换行符在不同的操作系统上定义的区别造成的。
Windows用CR LF来定义换行,Linux用LF。CR全称是Carriage Return ,或者表示为\r, 意思是回车。 LF全称是Line Feed,它才是真正意义上的换行表示符。为什么Windows添加一个CR和LF组合表示,我并不清楚。不过如果用git diff的时候看到^M字符,就说明两个文件在换行符上有所差别。
比如从我的Windows开发的同时那边拿来一个目录,就会发现几乎所有的文件都被修改过了。其实并不是这样,都是由于文件多了CR后造成的。
下面简单的方法可以让git diff的时候忽略换行符的差异:
git config --global core.whitespace cr-at-eol
更好的方法是每个项目都有一个.gitattributes文件,里面配好了换行符的设置,参考
https://help.github.com/articles/dealing-with-line-endings
这是由于换行符在不同的操作系统上定义的区别造成的。Windows用CR LF来定义换行,Linux用LF。CR全称是Carriage Return ,或者表示为\r, 意思是回车。 LF全称是Line Feed,它才是真正意义上的换行表示符。为什么Windows添加一个CR和LF组合表示,我并不清楚。不过如果用git diff的时候看到^M字符,就说明两个文件在换行符上有所差别。比如从我的Wind
原文链接:文本换行符号 (^M) 导致的
git
diff
问题 | 👨🏻🌾 苏子叶的技术菜园
问题的现象
文件改动了一点,但是在
git
lab/
git
hub 看
diff
却发现整个文件全部都进行了改动,且文件变的乱序或者变成了一行。
原因: 文件换行符导致
文本换行符号通常有: LF 和 CRLF。
首先介绍 LF 和 CRLF 下是什么:
CRLF: 是 carriagereturnlinefeed 的缩写。中文意思是回车换行;
LF: 是 line feed 的缩写,中文意思是换行;
问题原因:
因为windows、linux、os系统的换行符标准不同:
先了解下概念,回车:用“\r”表示,ASCII码中的“代码”为CR,意义是将光标移到当前行的首位;换行:用“\n”表示,ASCII码中的“代码”为LF,意义是将光标移到下一行;
DOS/Windows系统采用CRLF(回车+换行)表示下一行,即“\r\n”;
Linux/UNIX系统采用LF表示下一行,即“\n”;
MAC系统采用CR表示下一行,即“\r”;
问题如图所示:
解决方案:
git
config --global co
在
git
提交代码时,执行
git
diff
命令发现在每一行
修改
后多出“^M”,并且还多出了几行无效
修改
(本地未作任何
修改
,但是
git
diff
时显示有
修改
并且看不出
修改
了何处),这样的代码是肯定不能提交的,那么如何解决这种问题呢?
“^M”产生的原因:
这是由于换行符在不同的操作系统上定义的区别造成的。
Windows用CR LF来定义换行,Linux用LF。CR全称是Ca...
python源码在linux下每行多了^M符号。
出现这种现象有两种情况:一种是用pycharm上depolyed远程开发,可能会出现。2.
git
pull代码部署时候,每个python代码后面都多余了^M符号
二、解决方法
mac或linux下
$
git
config --global core.autocrlf input
windows下
$
git
config --global core.autocrlf true
原因就是window下是CRLF(回车
$ gem install
git
_
diff
-lcs
$
git
_
diff
_lcs shortstat [
GIT
_REPOSITORY or WORKING_DIRECTORY] [SRC(branch or commit)] [DEST(branch or commit)]
$
git
_
diff
_lcs shortstat https://
git
hub.com/btpink-seo/
git
-
diff
-lcs.
git
test/src test/dest
$
git
_
diff
_lcs shortstat workspace/
git
-
diff
-lcs test/src test/dest
与“
git
diff
--shortstat”进行比较
$
git
git
web
diff
[args]
您可以将所有相同的参数传递给
git
diff
,例如1234..5678或HEAD 。
也可以直接调用web
diff
来比较两个目录或文件:
web
diff
<left> <right>
web
diff
<left> <right>
您还可以使用web
diff
查看
Git
Hub拉取请求:
web
diff
https://
但实际上查看代码我们并没有插入空格。
这是由于每个操作系统有自己的换行符(就是当你按下”回车”后,系统会自动插入一些不可见的符号来表示一行的结束),Linux和Mac都是使用LF ,Windows 则是CRLF ,这样就造成了差异
解决办法:
git
config --global core.whitespace cr-at-eol
提交时转换为LF,检出时不转换
git
confi
git
diff
是
Git
的一个命令,用于比较两个版本之间的差异。
通常,我们可以使用
git
diff
命令来查看当前工作目录与暂存区的差异,也可以使用
git
diff
命令比较两个提交的差异。
基本用法如下:
$
git
diff
[options] [<commit>] [--] [<path>...]
其中,[options] 指的是可选的选项,[<commit>] 指的是要与之比较的提交,[<path>] 指的是要比较的文件或目录的路径。
如果不指定 <commit> 参数,默认会比较当前工作目录与暂存区的差异。如果要比较两个提交之间的差异,可以使用如下命令:
$
git
diff
<commit1> <commit2> [--] [<path>...]
如果要查看暂存区与最新提交之间的差异,可以使用如下命令:
$
git
diff
--cached [<commit>] [--] [<path>...]
此外,还可以使用多种选项来控制
git
diff
的输出,例如:
- `-p` 或 `--patch`:显示每个文件的差异,并按补丁格式输出。
- `--stat`:显示统计信息,包括文件的
修改
行数和百分比。
- `--name-only`:只显示文件名,不显示文件内容。
- `--name-status`:显示文件名和状态,而不是文件内