不同操作系统下的换行不一致,当一个项目的开发者分别再linux/mac/win下做了代码提交改动之后,使用
git diff
命令时,可能会发现,即便啥也没改,当时有很多变动,显示
^M
的差别
主要原因就是换行的问题
解决这个问题的一个办法就是统一换行
今天介绍的一个小技巧就是通过设置全局的换行来实现多操作系统的换行符统一
git config --global core.autocrlf true
复制代码
因为Linux和Mac都是使用LF ,Windows 则是CRLF,所以在我们按下回车换行时,虽然肉眼的展示效果一致,当时实际上却是不一样的
-
windows: CRLF =
\r\n
-
mac/linux: lf =
\n
GitHub建议你应该只用
\n
来做为新行的开始,当然建议只是建议;一个原则就是我们希望可以统一,一分代码,不管在什么操作系统下,表现一致(包括换行、编码等)
使用
core.autocrlf
参数,设置为ture时,Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF
Linux或Mac系统使用LF作为行结束符,因此你不想Git在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正, 把
core.autocrlf
设置成input来告诉Git在提交时把CRLF转换成LF,签出时不转换
git config --global core.autocrlf input
【Git】Git 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )(二)
【Git】Git 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )(一)
【Git】Git 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )(一)
P4Merge
P4Merge是Git的一个第三发Diff和Merge工具(可视化冲突解决工具).
下载地址: https://www.perforce.com/downloads/visual-merge-tool
安装的时候只需要勾选p4merge即可:
然后需要把p4merge的路径添加到环境变量PATH里面.
使用$ git difftool --tool-help命令来查看系统支持哪些Git Diff插件。
$ git difftool --tool-help
'git difftool --tool=' may be set t...
目前我的解决的方法是:windows上开发,提交到git(oschina的linux环境),在windows上用ftp(二进制传输,不做处理原样传输)上传部署到业务服务器上
我觉得在windows下开发,再git到oschina,再ftp上传到linux服务器上,比较保险的方式是:git时不开启自动转换autocrlf,但开启safecrlf, ftp用二进制
最近在使用GitHub,发现不时没有修改过的文件要提交,对比发现文件全部修改,但找不到不一样的地方。
通过git的diff命令对两个commit id的版本进行差异化的对比。中文文件时出现乱码。
git diff 6bded8d0c1fe1746c122121217dc0c88667091089 a9b87b07908a446a5471b233232ade2dbd0734d8 --name-only
"markdown/2016/07/\345\210\206\346\224\257\346\265\213\350\257\225.md"
执行如下命令,修改core.quotepath参数即可。