windows10配置git连接github(具有时效性的方法)和一些问题的讲解

安装Git

很简单,网络上一搜一大把,看最新日期的

Git与github建立连接

网上的教程很多是没有时效性的,因此我们会遇到很多坑,所以我推荐大家看github官方的帮助文档来进行SSH连接github。但是有一些需要注意的地方,可以帮助你更好地去完成连接。

SSH密钥不要在用RSA算法生成的密钥了

官方文档中的说明如下图所示,具体用什么方法生成,参考这里 。网上很多教程太老了,还是使用RSA算法生成的密钥来进行教程。
在这里插入图片描述

简单了解SSH的公钥和私钥

这篇文章讲的很通俗易懂,这里就不多说了,理解公钥、私钥和数字签名的意义和区别!

SSH 密钥密码(SSH key password)、ssh-agent和bashrc文件

官方文档对SSH key password的介绍 。这里需要补充一下这篇文档里面中的“Starts automatically on Git for Windows ssh-agent”部分,这部分就是教你如何设置使得gitbash每次开机初次启动时自动启动ssh-agent,从而让你只需要初次启动gitbash时输入一次ssh key password即可,避免每次连接时都输入ssh key password。这里对官方教程代码进行部分修改

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add ~/.ssh/one_rsa # 添加你自己的私钥,即指定想要ssh-agent导入的私钥位置来覆盖ssh-agent默认私钥。因为官方教程代码这里没有指定路径,则会按照将默认目录~/.ssh下与默认的id_rsa私钥一样的私钥密码(ssh key password)私钥一同导入ssh-agent,如果没有具有相同私钥密码的其他私钥,则只会导入id_rsa.
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add ~/.ssh/one_rsa
fi

unset env
#现在,当您初次运行 Git Bash 时,系统将提示您输入密码;关闭gitbash,ssh-agent 进程将继续运行,直到您注销、关闭计算机或手动终止该进程。这里不会产生与下文说的重新开启一次gitbash就会启动一个新的ssh-agent进程问题,而是只会产生一个进程。

这里介绍的git for windows里面的方法对于windows系统并不能在gitbash关闭之后自动执行~/.bash.logout文件,所以你关闭gitbash都不会自动关闭ssh-agent,而每次打开gitbash都会创建一个新的ssh-agent,可以看任务管理器进程发现这个问题。

什么是ssh-agent以及ssh-agent的常用命令语句请看这里!文章里面缺失的ssh-agent原理图如下所示。
在这里插入图片描述

在这里插入图片描述
上面那张图中第二句话的意思是,复制程序框中的代码放入git的profile文件或者bashrc文件中,即可实现利用ssh-agent管理ssh key password。“~/.”是相对路径,指的是使用电脑的当前用户文件夹(例如:C:\Users\13473)。但是当你去此文件夹下寻找profile和bashrc文件时,你是找不到的,也没有被隐藏,需要你自己创建。

创建方法如下:
在gitbash命令栏中输入
touch ~/.bashrc
在当前用户目录下创建bashrc文件,然后用编辑器(或者记事本)打开该文件,将上图的代码框中的代码复制进入保存即可。

关于bashrc的具体介绍可以看下文profile、bashrc和bash_profile的区别部分内容

测试ssh连接提示超时解决方法

当在gitbash中输入以下测试连接的代码
$ ssh -T git@github.com
出现下图的超时提醒
在这里插入图片描述
不要慌,而且你会发现你ping github.com也会超时!原因是因为DNS解析该网址的所在ip延迟实在太高了,可以去此网站查看github.com不同ip的响应速度,默认的DBS解析的ip响应是超时的,因此我们需要手动修改ip!

方法如下(该方法可以帮助你git利用ssh协议与github进行连接(一般不需要任何科技,但是如果pull和push过程中总是超时,那么可能需要给git加个代理进行科科学上网,具体方法见下面“git如何设置代理”部分内容),但是对于github网页的访问效果不好,还是需要科学上网):
1.到这个地址 https://raw.hellogithub.com/hosts 下载最新的github hosts文件,找到github.com的ip地址。
在这里插入图片描述
2.修改本地配置, 在 C:\Windows\System32\drivers\etc\hosts
中录入上述github地址(直接将上图一行信息都复制到hosts文件中保存即可),保存并退出即可登录github了。
3.如果仍然不好使,可以在 cmd窗口执行 ipconfig /flushdns 命令清理下本机的dna解析信息。
4.再次测试连接应该不会提示超时了

这里额外补充如何修改本地的hosts文件
将hosts文件复制到桌面,然后使用记事本编辑,修改完成后,再去替换掉系统盘的hosts文件,这样可以解决你的编辑器可能没有管理员权限无法修改hosts文件的问题。

hosts文件、DNS和ip是什么?

参考这篇文章

git如何设置代理

具体实现可以参考这篇文章,写的很详细。具体就是根据你代理所使用的协议(http或者stocksv5)进行相对应的修改,这里需要注意的是最新的clash已经支持两个协议共用一个端口的功能,所以直接二选一即可

具体操作过程如下:
打开~/.ssh路径下的config文件,添加如下代码

Host github.com
    User git
    ProxyCommand connect -H 127.0.0.1:7890 %h %p

如果你用的是clash来进行科学上网直接这样设置就行,这样你的ssh针对github的代理就设置完成了。其余细节讲解部分参考上述文章。

profile、bashrc和bash_profile的区别

参考这篇文章,本部分需要对启动顺序和一些其余关系进行细节讲解。如果你知识储备充足可以看这篇详细的介绍文章来感受bash_profile和bashrc的区别。
在这里插入图片描述

  1. “profile”系列文件的主要目的在于为“登录shell”设置环境变量和启动程序,针对用户层面的环境变量储存在~/.bash_profile文件中;而“bashrc”系列文件的主要目的在于设置功能和别名。如果想对bash的功能进行设置或者是定义一些别名,推荐你修改 ~/.bashrc文件,这样无论你以何种方式打开shell,你的配置都会生效。而如果要更改一些环境变量 ,推荐你修改~/.bash_profile文件,因为考虑到shell的继承特性,这些更改确实只应该被执行一次(而不是多次)。所以我推荐将上文的ssh-agent自动启动代码放入bashrc文件中。
  2. 启动gitbash之后,先自动读取系统层面的profile文件,然后调用用户层面的.bash_profile、.bash_login和.profile三个文件的其中一个(调用成功其中一个另外就不在调用),三者的优先级是**.bash_profile 最优先 > .bash_login其次 > .profile 最后**。而用户层面的.profile文件和.bashrc文件是需要自己创建的,然后一般通过.bash_profile进行显性调用(也就是你直接创建用户层面的.profile和.bashrc文件对gitbash进行配置,一般gitbash会提示“A ~/.bash_profile that loads ~/.bashrc will be created for you.”也就是自动创建一个.bash_profile文件来调用上述两个文件来进行gitbash配置),因为Unix系统常见的设置,其中登录Shell会加载 ~/.bash_profile 文件,而 ~/.bash_profile 文件会加载 ~/.bashrc 文件。
  3. ~/.bash_profile 文件通常用于只在登录过程中执行一次的命令和配置,例如设置环境变量或运行初始化脚本。另一方面,~/.bashrc 文件在每个新的交互式Shell会话中被加载,也就是你无论什么方式打开的gitbash都会对.bashrc文件的命令进行执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值