沧歌


起风了,唯有努力生存


Git使用笔记

我的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所有分支,解决办法如下:

  1. 找一个干净目录,假设是git_work
  2. cd git_work
  3. git clone http://myrepo.xxx.com/project.git ,这样在git_work目录下得到一个project子目录
  4. cd project
  5. git branch -a,列出所有分支名称如下:
    remotes/origin/dev
    remotes/origin/release
    
  6. git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
  7. git checkout -b release origin/release,作用参见上一步解释
  8. git checkout dev,切换回dev分支,并开始开发。

参考资料:

最近的文章

多线程检索文件 - 生产者消费者模型

我的CSDN博客是https://blog.csdn.net/daodao0/,但我感觉在CSDN上写限制很多,广告也很多,不甚满意。所以github pages博客建立后,就渐渐不在CSDN上写了。一些我觉得有价值的博文我也搬运到了这里。这篇是其中一篇。———————— 分割线 —————————要求请分别开发一个单线程和多线程的程序来完成下述功能,并对其性能进行比较分析。检索1个超大文本...…

algorithm c parallel继续阅读
更早的文章

搭建 Postfix、Dovecot 邮件服务

个人站点建好后,如果希望它能在有消息的时候第一时间通知你,你需要一个邮件服务器。下面介绍一个邮件服务器的搭建过程。说明: 参考资料 腾讯云开发者实验室 https://www.qcloud.com/developer/labs/lab/10096 实验使用的系统是centos 7.2,如果你使用的是其他版本,请自行替换修改系统服务的相关命令。在centos 6中启动服务命令是servic...…

linux email继续阅读