Git常用操作
1.git设置自动转换换行符
使用场景:
不同系统下的换行符:
Unix/Linux:LF
Mac OS:CR(Mac OS X已经改成和Unix/Linx一样使用LF)
windows:CRLF
跨平台协作时,需要统一换行符,一般的做法是在提交时自动将CRLF转换为LF,检出时自动将LF转换为CRLF。
操作方法:
提交和检出均做转换:
git config --global core.autocrlf true
提交时转换,检出时不做转换:
git config --global core.autocrlf input
提交和检出均不做转换:
git config --global core.autocrlf false
拒绝提交包含混合换行符的文件:
git config --global core.safecrlf true
允许提交包含混合换行符的文件:
git config --global core.safecrlf false
提交包含混合换行符的文件时给出警告:
git config --global core.safecrlf warn
2.git设置指定文件不做换行符转换
使用场景:
跨平台协作时,一般都设置了LF和CRLF的自动转换,但是对于有些文件,比如证书文件,换行符变了以后就不生效了,所以我们希望git不要对这种文件做换行符的转换。
操作方法:
在根目录新建一个.gitattributes文件,如果已经有该文件,则在该文件中追加如下内容:
fileName.txt eol=lf
或者:
fileName.txt binary
附:windows系统无法直接创建.gitattributes文件,需要使用git创建
vi .gitattributes # 创建.gitattribute文件,并向文件中追加内容
i # 按下i键,最下面一行变为“-- insert --”时,可以开始输入内容
esc # 输入完成后,按下esc完成编辑,最下面一行变成空白
:wq # 输入:wq并回车,保存并退出编辑(:q 是退出不保存)
3.git submodule
使用场景:
开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。git的git submodule可以解决这个问题。
操作方法:
为当前工程添加submodule
git submodule add url path # url:子模块的仓库地址 path:子模块所在的路径,该路径不能以/结尾,也不能是已有的目录
执行完成以后,会在当前工程根目录下生成一个.gitmodules文件,记录了子模块的信息,最后提交。
删除submodule:
先在.submodules文件中删除相应的配置信息,再执行
git rm -cached
将子模块所在的文件从git中删除。
下载submodule(git clone时,submodule的内容并不会自动下载下来,需要执行下面的命令,将submodule的内容下载下来):
git submodule init
git submodule update
4.移动文件
使用场景:
需要移动文件时,若手动移动,再提交的话,原来的文件会被标记为删除,移动后的文件会被标记为新增,不便于管理代码的变更。
操作方法:
git mv src dest
5.代码覆盖
用远程的代码覆盖本地代码:
git fetch --all
git reset --hard origin/branchName
git pull
本地代码覆盖远程(强制推送本地代码至远程仓库):
git push origin branchName -f
或
git push origin branchName --force
6.使用git lfs上传大文件
使用场景:
git默认的上传文件大小限制是100M,如果有二进制文件大小超过100M,且二进制文件不需要git跟踪具体的变化,在不修改git配置的情况下,该文件提交不上去,且会使git库文件大小迅速膨胀。
操作方法:
git默认是不带lfs的,需要下载安装包进行安装,安装方法参考以下链接:https://git-lfs.github.com/
根据安装向导安装下载的 .exe 包后,启动一个新的命令行窗口,输入:
git lfs install
然后对二进制文件执行track命令:
git lfs track fileName.bin
最后提交.gitattributes文件和二进制文件
参考链接1:https://www.jianshu.com/p/f13ef9e538e0
参考链接2:https://blog.csdn.net/oyji1992/article/details/73695693
参考链接3:https://git-lfs.github.com/
参考链接4:https://git-scm.com/book/zh/v1/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97