Git 配置手册

SSH 配置

Note

SSH 配置的优点是当你进行推送拉取操作时,Git 将会使用你之前配置的 SSH 密钥进行身份验证,而无需再次输入密码。

生成 SSH 密钥

进入命令行运行以下命令

ssh-keygen -t rsa -b 4096 -C "zhangsna@163.com"

参数说明:

  • ssh-keygen:这是命令的名称,用于生成 SSH 密钥。

  • -t rsa:指定密钥类型为 RSA。RSA 是一种非对称加密算法,常用于 SSH 密钥认证。

  • -b 4096:指定密钥的位数。这里的 4096 表示生成的 RSA 密钥的长度为 4096 位。通常来说,密钥长度越长,安全性越高。

  • -C "zhangsna@163.com":这是注释信息,用于描述密钥。在生成密钥对时,这个注释会被添加到公钥文件中。这里 "zhangsna@163.com" 表示密钥属于邮箱为 zhangsna@163.com 的用户。

随后系统会提示你输入密钥文件的保存路径,默认情况下会生成在用户目录的 .ssh 子目录下,文件名为 id_rsaid_rsa.pub,可以直接按回车键使用默认路径和文件名。

查看公钥

打开命令行终端,并输入以下命令来查看公钥内容

cat ~/.ssh/id_rsa.pub

添加公钥到代码托管平台

然后进行以下操作:

  1. 将显示的公钥内容复制到剪贴板。

  2. 打开 Gitee/GitHub 上的账户页面,进入 SSH 密钥的设置页面。

  3. 在页面上点击 “Add SSH Key” 或类似的按钮,并将刚才复制的公钥粘贴到相应的输入框中。

  4. 保存设置,服务器就会将你的公钥添加到授权列表中。

配置 Git 使用 SSH

接下来,打开命令行终端,并使用以下命令来配置 Git 使用 SSH 密钥

git config --global user.email "your_email@example.com"
git config --global user.name "Your Name"
git config --global core.sshCommand "ssh -i ~/.ssh/id_rsa"

首次连接确认

最后,第一次 clone 会让你输入以下内容,输入 yes 即可

Cloning into 'c_tutorial'...
The authenticity of host 'gitee.com (180.76.198.225)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Please type 'yes', 'no' or the fingerprint: yes

代理配置

GitHub 下载慢,可以给它单独设置代理

# 设置全局代理,对本地每个 GitHub 仓库都会生效
git config --global http.https://github.com.proxy http://127.0.0.1:7897

# 设置当前仓库的代理,只会对当前的 GitHub 仓库生效
git config --local http.https://github.com.proxy http://127.0.0.1:7897

查看代理

列出所有代理

git config --global --list | Select-String proxy

删除代理

git config --global --unset http.https://github.com.proxy

远程分支误命名怎么办?

查看远程仓库信息

# 查看确认远程仓库的完整信息
[root@VM-0-14-opencloudos soul-nav]# git remote -v
orignal/main    git@github.com:leeyorke/soul-nav.git (fetch)
orignal/main    git@github.com:leeyorke/soul-nav.git (push)

重命名远程仓库

# 重命名
[root@VM-0-14-opencloudos soul-nav]# git remote rename "orignal/main" origin
Renaming remote references: 100% (1/1), done.

设置上游分支

# 配置本地 master 分支跟踪远程 origin/master
[root@VM-0-14-opencloudos soul-nav]# git branch --set-upstream-to=origin/master master
branch 'master' set up to track 'origin/master'.

验证配置

# 正确的配置
[root@VM-0-14-opencloudos soul-nav]# git remote -v
origin  git@github.com:leeyorke/soul-nav.git (fetch)
origin  git@github.com:leeyorke/soul-nav.git (push)