如何使用Git
首先安装git
使用git打开命令窗口
配置user.name、user.email。(显示commit的用户名和邮箱)
1 2
| git config --global user.name '用户名' git config --global user.email '邮箱'
|
Git的配置一共有三个级别:system(系统级)、global(用户级)和local(版本库)。system的配置整个系统只有一个,global的配置每个账户只有一个,local的配置取决于Git版本库数量,在版本库才能看到。
这三个级别是逐层覆盖的,首先去查找system配置,其次查找global配置,最后查找local配置。逐层查找的过程中若查到配置值,则会覆盖上一层的配置。假如三个级别都配置了用户信息,则最后生效的配置是local(版本库)级的。
即 local > global > system
local配置
1 2
| git config --local user.name '用户名' git config --local user.email '邮箱'
|
global配置
1 2
| git config --global user.name '用户名' git config --global user.email '邮箱'
|
system配置
1 2
| git config --system user.name '用户名' git config --system user.email '邮箱'
|
本地生成ssh密钥,中间可以修改文件名,默认就是一路回车
1
| ssh-keygen -t rsa -C '邮箱'
|
修改.ssh下的config文件
1 2 3 4 5 6 7 8 9 10 11
| notepad %HOMEPATH%\.ssh\config
####粘贴并修改以下内容到config,修改username为电脑用户名
Host github.com User git Port 443 HostName ssh.github.com # 注意修改绝对路径,或者修改username为电脑用户名 IdentityFile "C:\Users\Administrator\.ssh\id_rsa" TCPKeepAlive yes
|
将公钥(后缀为pub)里的内容复制到github里,一键直达
不出意外能够正常使用,出意外了也很正常。
如何代理git
以上就是配置git的过程,如果你不加hosts还是无法使用,加hosts也是一会一阻断,clone、pull、push统统失败。开代理可以,但是要提前配置好才能使用,要不然挂全局也是没有用的。
对于pull和clone我们还可以使用之前的方式,但是push不行。
所以我们使用代理
- 一个代理
- 代理软件的端口号(http和socks)(我使用的是clash,默认端口号为7890)
在Github上主要用到的是https和ssh协议,所以我们要对这两种协议流量进行代理
http代理
使用http代理(推荐)
1 2 3 4 5
| git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy http://127.0.0.1:7890
git config --global http.https://github.com.proxy http://127.0.0.1:7890
|
使用socks5(h)代理(强烈建议)
git 底层使用 libcurl 发送 http 请求,而 libcurl 的代理使用 socks5://时会在本地解析 DNS ,应该改成 socks5h://
1 2 3 4 5 6 7 8 9 10 11 12 13
|
git config --global http.proxy socks5://127.0.0.1:7890 git config --global https.proxy socks5://127.0.0.1:7890
git config --global http.https://github.com.proxy socks5://127.0.0.1:7890
git config --global http.proxy socks5h://127.0.0.1:7890 git config --global https.proxy socks5h://127.0.0.1:7890
git config --global http.https://github.com.proxy socks5h://127.0.0.1:7890
|
查看代理
1 2
| git config --global --get http.proxy git config --global --get https.proxy
|
取消代理
1 2 3
| git config --global --unset http.proxy git config --global --unset https.proxy git config --global --unset http.https://github.com.proxy
|
以上配置是针对http协议的,这时在clone和pull时就会使用代理,然而push使用http时,每次都要输入密码,很不方便,所以也要对ssh进行代理。
ssh代理
1 2 3 4 5
| vi ~/.ssh/config
notepad %HOMEPATH%\.ssh\config
|
替换connect.exe的路径(与git在同一路径下)和端口号
经过我本人实验正确。
ProxyCommand如果在最上面,那么Host下的ProxyCommand将不起作用,所以要分别代理的话使用第二种。
ProxyCommand如果在最下面将不起作用。
- 全部域名代理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p
Host github.com User git Port 443 HostName ssh.github.com IdentityFile "C:\Users\Administrator\.ssh\one" TCPKeepAlive yes
Host two.github.com User git Port 443 HostName ssh.github.com IdentityFile "C:\Users\Administrator\.ssh\two" TCPKeepAlive yes
|
- github域名分别代理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Host github.com User git Port 443 HostName ssh.github.com IdentityFile "C:\Users\Administrator\.ssh\one" TCPKeepAlive yes ProxyCommand "D:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p
Host two.github.com User git Port 443 HostName ssh.github.com IdentityFile "C:\Users\Administrator\.ssh\two" TCPKeepAlive yes ProxyCommand "D:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p
|
1 2 3
| # 测试是否成功 ssh -T git@github.com ssh -vT git@github.com # 加v会显示debug信息
|
建议配置http代理用来pull和clone,配置ssh代理用来push
多个github账号怎么办
1 2 3 4
| # 最好进入%HOMEPATH%\.ssh\下生成密钥 ssh-keygen -t rsa -C '邮箱' # 不要一路回车,要注意与第一个有区别 # pub粘贴进对应的github账号里
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 修改 ~\.ssh\config
Host github.com User git Port 443 HostName ssh.github.com IdentityFile "C:\Users\Administrator\.ssh\one" TCPKeepAlive yes
Host two.github.com User git Port 443 HostName ssh.github.com IdentityFile "C:\Users\Administrator\.ssh\two" TCPKeepAlive yes
|
1 2 3 4
| ssh -T git@github.com ssh -T git@two.github.com
|
1 2 3 4 5 6 7
| # 取消全局 用户名/邮箱 配置 git config –global –unset user.name git config –global –unset user.email
# 单独设置每个repo 用户名/邮箱 git config user.name '用户名' git config user.email '邮箱'
|
1 2 3 4 5 6 7 8 9 10 11
| git clone git@github.com:用户名/仓库名.git
git clone git@github.com:用户名/仓库名.git git clone git@two.github.com:用户名/仓库名.git
git remote rm origin git remote add origin git@one.github.com:用户名/仓库名.git git push origin master
|
hexo
如果第二个github用来作为hexo,那么修改在hexo目录下的_config.yaml
1 2 3 4 5 6
| deploy: type: 'git' repository: git@two.github.com:用户名/仓库名.git branch: main
|
然后执行 hexo g -d
参考与引用:
设置代理解决github被墙
Git的ssh配置