踩坑记录之git 代理设置

踩坑记录 专栏收录该内容
4 篇文章 0 订阅


为了加快从远程仓库下载资源的速度,经常需要切换代理,这篇文章就是记录我在设置代理时遇到的一些坑,记录下来,给遇到相同问题的兄弟们一个参考,也给我一个警醒。为了不使文章脱节,有可能也是为了凑字数,分为两个部分,第一部分介绍了 git 的基本使用, 第二部分才是我的踩坑记录 (貌似这排版不是很合理)。问题是出在了 2.7 部分即当我准备与远程仓库连接时会因为的代理设置的问题发生连接错误,另外代理设置的问题也会导致 git clone 的失败

1 git 基本使用

我的环境是 windows10,linux 操作类似,需要安装 windows 版本的 git (windows 版本的 git 自带一个支持 bash 的终端),自行到git官网下载,安装教程可以参考 git 安装教程

创建本地仓库管理代码,并上传到远程仓库进行托管,过程如下:

2.1 进入 git 自带的 bash

首先打开你要管理的代码文件夹,在该文件的文件夹的根目录下右键点击 Git Bash here 进入 bash 使用 git 进行操作:

2.2 初始化仓库,执行下面的命令

git init

输出:

Initialized empty Git repository in G:/tmp/git_test1/.git/

2.3 添加文件到仓库托管

接着使用 add 子命令将项目或者文件添加到仓库:

git add code1 test1.c # 选择你想要管理的代码文件或者文件夹即可
git add . # 或者可以使用该命令将当前文件夹所有文件加入仓库

上面两个命令任选一个,code1, test1.c 换成你对应文件夹下的文件

2.4 提交修改

然后再使用 commit 子命令提交,表示提交本次的一个修改:

git commit -m "first commit" # -m 后面的引号表示本次提交的描述信息,必须添加,不然提交不会通过

commit 不需要指定文件,它是默认提交这一次的修改,概括你使用 add 添加了哪些文件,或者修改了文件的内容。

2.5 添加个人信息

在执行完 2.4 后,第一次使用 git 的人会遇到如下提示消息:

Author identity unknown

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'tancong@DESKTOP-DCJAVQ4.(none)'
)

可以看到提交修改失败了,上面输出的大概意思是:你必须要告诉我你是谁才能提交,运行 git config --global user.email "you@example.com" 设置你的邮箱,运行 git config --global user.name "Your Name" 设置你的名字,余下的内容不用看 (你的输出可能会稍微有点差别,因为版本会有差异,不过意思是一样的)

这个时候执行如下命令:

git config --global user.email "1050430722@qq.com" # 改成你的邮箱
git config --global user.name "shunchungao" # 改成你的名字

运行完之后再使用如下命令进行提交:

git commit -m "first commit" # -m 后面的引号表示本次提交的描述信息,必须添加,不然提交不会通过

即可提交成功

2.6 在 github 上创建一个空仓库

在 github 上创建一个空仓库 (创建的不是空仓库要解决上传时分支合并问题),要是想要添加东西的话我们在本地把写好的东西 push 上去就行。在强调一下,一定要是空的!(不然你上传不上去) 点击头像左边的加号,点击 “New repository”

进入如下界面:

创建空仓库只需输入 repository name(仓库名字随便取),Description 随便写,然后再点击 Create repository 即可完成创建

2.7 复制远程仓库链接并关联远程仓库:

打开你刚才创建好的仓库 (我这里实际创建的仓库名字为 git_test.git 和上面截图有点不一样),

然后返回 Git Bash 中输入如下命令:

git remote add origin https://github.com/jack-tan2/git_test.git

上面命令的意思是:在本地仓库关联一个 github 上的 git 仓库作为远程仓库,起名 origin,后面我们就可以使用这个名字上传,而不用使用上面的远程仓库链接上传

部分人输入完上面的命令之后,会提示让你输入 github 账号和密码,然后你输入正确后就可以提交成功了,

Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 203 bytes | 203.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/jack-tan2/git_test.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

这个时候你就可以看到你的 github 账号中的对应仓库里面已经存放着你的代码了。

但是很多人会出现错误,比如下面两种:

  1. fatal: unable to access 'https://github.com/jack-tan2/git_test.git/': gnutls_handshake() failed: Error in the pull function.

这一种错误是因为你网络与 github 通信不好,需要挂代理

  1. fatal: unable to access 'https://github.com/jack-tan2/git_test.git/': Failed to connect to 127.0.0.1 port 1080: Connection refused

这一种错误是因为你已经设置了代理的主机号和端口,但是并没有将对应的代理打开 (如 v2ray 之类的代理软件),下面来详细讨对 git 代理设置的问题

2 git 的代理设置

经常设置代理的同学可能会遇到 git 无法工作的情况,问题分为 git 自身问题和非 git 自身的外部原因

自身问题 是由于 git 可以用命令给自身设置局部代理,而且通过命令产生的相关设置在关闭终端后仍然生效 (通常使用命令的设置是临时的,重启终端后就失效了)

如果你设置错了代理,将代理设置成 http://127.0.0.1:8889,但是你打开的 http 类型的代理软件的主机号和端口是 http://127.0.0.1:1010,这样端口不一样的话,git 就不会工作,就算你重新打开终端 git 也一样连不上,所以由于某个时刻操作上的失误以及失误后遗忘了这个错误操作,就会导致 git 一直都无法正常与远程仓库连接

外部原因 原因应该很多,我遇到的一种情况就是你将自己的电脑重启后会发现浏览器上不了网了,浏览器是走 http/https 的,而我的 git 用的也是 http/https,所以 git 也无法与远程仓库连接了。这种情况是因为重启了,你的代理软件已经关闭,但是相关的代理设置并没有关闭,这个时候你需要取消这些设置

2.1 使用 git 命令给 git 设置代理

  1. 使用 config 子命令为 git 单独设置代理
git config --global http.proxy http://127.0.0.1:8889
git config --global https.proxy https://127.0.0.1:8889

设置完了之后我们 git config -l --global 查看 git 的配置,输出如下:

user.email=you@example.com # 我们之前输入的邮箱也被  git 保存了
user.name=Your Name	# 我们之前输入的用户名也被  git 保存了
http.proxy=http://127.0.0.1:8889
https.proxy=https://127.0.0.1:8889

可以看到 git 的 http/https 的代理已经成功被设置

要注意 http://127.0.0.1: 后面的端口号必须与你的代理软件的 http/https 的端口一致,否则就会出现以下的错误:
fatal: unable to access 'https://github.com/jack-tan2/git_test.git/': Failed to connect to 127.0.0.1 port 1080: Connection refused

而且还要注意的事情就是,你把代理客户端软件关了之后,git 就连不上了,因为你输入了上面两条命令之后,git 会直接将这个两个配置写入配置文件,会永远生效,这就和 bash 不一样,bash 在命令行中设置的是临时的,你重新打开,之前的配置就会失效,这样使得 git 会一直通过代理服务器来与远程服务器进行连接,可此时 https://127.0.0.1:8889 的代理已经关闭,自然无法连接,这个时候我们就要使用 config 子命令的 --unset 选项来取消:

git config --global --unset http.proxy
git config --global --unset https.proxy

设置完了之后我们 git config -l --global 查看 git 的配置,输出如下:

user.email=you@example.com
user.name=Your Name

可以看到代理设置已经消失,这个时候就可以在代理客服端软件关闭的时候使用 git 连接远程仓库了。

  1. 使用代理客户端软件,自动为整个系统设置代理

只要打开了代理软件,成功能连上网,git 也就相当于走了代理,关闭了代理软件,也就相当于 git 关闭了软件,这个就比 1. 中 git 代理的手动设置要方便的多

参考资料

  1. windows 下 git 安装教程
  2. git 官方下载地址
  3. git如何设置使用代理
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值