我的CSDN博客是https://blog.csdn.net/daodao0/,但我感觉在CSDN上写限制很多,广告也很多,不甚满意。 所以github pages博客建立后,就渐渐不在CSDN上写了。一些我觉得有价值的博文我也搬运到了这里。 这篇是其中一篇。
———————— 分割线 —————————
要说如何学习使用Git,我自然推荐廖雪峰的git教程。 还有一份Git命令备忘清单也值得参考。 这篇博客只想记录一些我遇到的问题及解决办法。
git clone 太慢怎么办?而且经常失败?
解决方法一: git shallow clone
git clone 默认会下载项目的完整历史版本,如果你只关心最新版的代码,而不关心之前的历史信息,可以使用 git 的浅复制功能:
$ git clone --depth=1 https://github.com/bcit-ci/CodeIgniter.git
--depth=1
表示只下载最近一次的版本,使用浅复制可以大大减少下载的数据量,这样即使在网络环境差,也可以快速的获得代码。如果之后又想获取完整历史信息,可以使用下面的命令:
$ git fetch --unshallow
或者,如果你只是想下载最新的代码看看,你也可以直接从 GitHub 上下载打包好的 ZIP 文件,这比浅复制更快,因为它只包含了最新的代码文件,而且是经过 ZIP 压缩的。但是很显然,浅复制要更灵活一点。
解决方案二: 让Git走代理
可以是直接使用命令进行设置,也可以编辑~/.gitconfig文件。
1、使用命令
git config --global -l # 查询当前设置
下面假设本地代理端口是10800
。
http代理:
git config --global http.proxy http://127.0.0.1:10800
git config --global https.proxy https://127.0.0.1:10800
socks5代理:
# 设置git代理
git config --global http.proxy 'socks5://127.0.0.1:10800'
git config --global https.proxy 'socks5://127.0.0.1:10800'
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
# 只针对github.com
git config --global http.https://github.com.proxy socks5://127.0.0.1:10800 # 设置代理
git config --global --unset http.https://github.com.proxy # 取消代理设置
2、编辑文件~/.gitconfig
在文件添加:
[http]proxy = socks5://127.0.0.1:10800
[https]proxy = socks5://127.0.0.1:10800
然后就可以直接使用git命令重新下载了。
git windows下换行符问题
在各操作系统下,文本文件所使用的换行符是不一样的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)作为换行符。Git提供了一个“换行符自动转换”功能。这个功能默认处于“自动模式”,当你在签出文件时,它试图将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);当你在提交文件时,它又试图将 CRLF 替换为 LF。 Git 的“换行符自动转换”功能听起来似乎很智能、很贴心,因为它试图一方面保持仓库内文件的一致性(UNIX 风格),一方面又保证本地文件的兼容性(Windows 风格)。但遗憾的是,这个功能是有 bug 的,而且在短期内都不太可能会修正。
解决
1.Git设置:
git config --global core.autocrlf false
git config --global core.safecrlf true
含义:
AutoCRLF
#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true
#提交时转换为LF,检出时不转换
git config --global core.autocrlf input
#提交检出均不转换
git config --global core.autocrlf false
SafeCRLF
#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true
#允许提交包含混合换行符的文件
git config --global core.safecrlf false
#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn
对于已经采用CRLF
的文件,目前专业的编辑器,如notepad++、vscode、Sublime都支持换行符转换。
还有一个好消息,Windows 10上的记事本也支持LF
换行符了,所以建议以后都用LF
吧 :)
git 切换远程分支
git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:
- 找一个干净目录,假设是git_work
cd git_work
git clone http://myrepo.xxx.com/project.git
,这样在git_work目录下得到一个project子目录cd project
git branch -a
,列出所有分支名称如下:remotes/origin/dev remotes/origin/release
git checkout -b dev origin/dev
,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支git checkout -b release origin/release
,作用参见上一步解释git checkout dev
,切换回dev分支,并开始开发。
参考资料:
- git clone 太慢怎么办? - aneasystone’s blog http://www.aneasystone.com/archives/2015/08/git-clone-faster.html
- git 设置代理,提高下载速度 https://baijiahao.baidu.com/s?id=1603409484949165821&wfr=spider&for=pc
- http://zhidao.baidu.com/link?url=cuqJsL9skJJn5c556zXfP1dgCAOUK37CDXkNIw_sS0YKmvoROTI0HP7-PbKjgs6Lv4XrGleG2fjg5AaNgASlxgmt00c7rsC5gpPryKR_D_G
- git windows下换行符问题 https://blog.csdn.net/twilightdream/article/details/52020461