git中LF和CRLF换行符

跨平台协作开发还是挺多的,LF(0x0A)是Linux默认的换行符,
CRLF(0x0D)是Windows下默认的换行符
git中提供了autocrlf配置项,用于在提交和检出时自动转换换行符,该配置有三个选项

  • true:提交时转换为LF,检出时转换为CRLF
  • false:提交检出均不转换
  • input:提交时转换为LF,检出时不转换
# 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

# 提交时转换为LF,检出时不转换
git config --global core.autocrlf input

# 提交检出均不转换
git config --global core.autocrlf false

如果把autocrlf设置为false时,另一个配置项safecrlf最好设置为true,
该选项检查文件是否包含混合换行符

  • true:拒绝提交包含混合换行符的文件
  • false:允许提交包含混合换行符的文件
  • warn:提交包含混合换行符的文件时给出警告
# 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

# 允许提交包含混合换行符的文件
git config --global core.safecrlf false

# 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

推荐配置

Administrator@DESKTOP-O5KFMG9 MINGW64 ~
$ git config --global core.autocrlf input

Administrator@DESKTOP-O5KFMG9 MINGW64 ~
$ git config --global core.safecrlf true

# 验证是否配置成功
$ git config --global --list

让代码仓库统一使用换行符LF,如果文件中包含CRLF类型的文件时将无法提交,使用dos2unix工具或其他工具手动转换文件类型

windows下git批量将换行符CRLF转换为LF
根据文件名后缀来进行转换

$ find . -name "*.sh" | xargs dos2unix
$ find . -name "*.yml" | xargs dos2unix
$ find . -name "*.yaml" | xargs dos2unix
$ find . -name "*.sql"| xargs dos2unix

根据文件类型来进行转换

$ find . -type f | xargs dos2unix

排除单个文件夹进行转换

-prune将前面匹配的路径进行排除
-o表示逻辑运算符的或

$ find . -path "./.git" -prune -o -print | xargs dos2unix

排除多个文件夹进行转换

$ find . \( -path ./.git -o -path ./.vscode \) -prune -o -print | xargs dos2unix

http://kuanghy.github.io/2017/03/19/git-lf-or-crlf

其他

创建新的分支并切换到新的分支

git checkout -b dev

首次 推送至远程仓库

$ git push --set-upstream origin dev

设置忽略git跟踪的文件

在主目录下创建.gitignore文件
gitignore忽略规则

target          //忽略这个target目录
target.json    //忽略这个target.json文件
target/*           //忽略target下的所有文件
css/*.css       //忽略css目录下的.css文件

gitignore文件

.idea //忽略.vscode这个文件夹

添加.gitignore文件

git add .gitignore
git commit -m "xxx"
git push

此时查看远程会发现.vscode这个文件夹仍然存在
解决:清除被忽略文件夹的本地缓存

$ git rm -r --cached .idea
rm '.idea/.gitignore'
rm '.idea/inspectionProfiles/profiles_settings.xml'
rm '.idea/lixinger.iml'
rm '.idea/vcs.xml'
rm '.idea/workspace.xml'

再次提交

合并远程分支到本地

//查询当前远程的版本
$ git remote -v
//获取最新代码到本地(本地当前分支为[branch],获取的远端的分支为[origin/branch])
$ git fetch origin master  [示例1:获取远端的origin/master分支]
$ git fetch origin dev [示例2:获取远端的origin/dev分支]
//查看版本差异
$ git log -p master..origin/master [示例1:查看本地master与远端origin/master的版本差异]
$ git log -p dev..origin/dev   [示例2:查看本地dev与远端origin/dev的版本差异]
//合并最新代码到本地分支
$ git merge origin/master  [示例1:合并远端分支origin/master到当前分支]
$ git merge origin/dev [示例2:合并远端分支origin/dev到当前分支]

https://hanchao.blog.csdn.net/article/details/79162130

pycharm的设置中找不到project选项
解决:关闭pycharm软件,删除.idea文件夹,重新打开pycharm软件,打开项目,右下角出现配置项目解释器,配置项目解释器即可。

远端分支同步至新设备本地

本地创建文件夹
初始化git文件夹
git init
关联远程仓库
git remote add origin https://gitee.com/xxxxx/xxx.git
拉取远端所有分支
git fetch

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐