有关 Git

新装 Git

新装 Git 后缺少一些必要的配置,可以通过运行命令查看当前 git 有关配置信息,打开 git bash 或其它控制台应用运行

git config --list

也可以搭配 --system/global/local 来区分配置级别,分别对应系统级、用户(全局)级和本地(项目)级,从左到右即从低到高级,高级别如有配置会覆盖低级别配置

git config --global --list

以 windows10 为例,安装 git 后会在用户文件夹下创建 .ssh 文件夹保存 git 本身的一些配置内容,新装的 git 是没有 user.name 和 user.email 的,可以通过设置查看或设定

# 查看
git config user.name
# 设置
git config --global user.name "这里写名字"

配置 SSH key

如果通过 https 方式与远程仓库进行联系则需要每次都提供用户名和密码,ssh 方式比较 geek 范儿也更为方便,其道理是在本地生成非对称的 rsa 密钥对,将 public key 提供给 git 服务方保存,以后只要密钥正确即可通过 ssh 方式进行对话,一个 ssh 方式的仓库地址可能是这样的 git@gitee.com:user/reposname.git,首先检查本地是否有存在的密钥,windows 系统进入 .ssh 文件夹,如果没有 id-rsa 类似文件和 id-rsa.pub 文件就没有,检查方式如下

# 打开 git bash
cd ~/.ssh
ls

使用指定文件名创建密钥文件,本例以配置多 git 源为例(即本地要与多于1个的 git 服务方联系,比如又有 gitee 的仓库又有 github 的仓库)

# 使用用户 email 创建文件名为 gitee_id-rsa 的密钥文件
# user.email 要替换为当前用户的真实 user.email
# gitee_id-rsa 是自定义的文件名,能区分出不同 git 源即可
ssh-keygen -t rsa -C "user.email" -f ~/.ssh/gitee_id-rsa

# 再创建一个与 github 对应的密钥
ssh-keygen -t rsa -C "user.email" -f ~/.ssh/github_id-rsa

到 .ssh 文件夹下,打开同名的 .pub 文件并将所有文本复制,粘贴到远程仓库的 ssh key 管理功能中,以 gitee 为例,标题是为用户方便记忆起个名字,内容粘贴到公钥框中,保存即可,这样远程 git 源就有了与本地对应的密钥对

因此有了多个密钥文件,下面要进行一定配置来指导 git 如何与不同远程仓库联系,在 .ssh 目录下建立 config 文件名的文件,没有扩展名哦,将下面内容复制并保存

# 配置github.com
Host github.com                 
HostName github.com
IdentityFile C:\Users\{current user}\.ssh\github_id-rsa
PreferredAuthentications publickey
 
# 配置gitee.com
Host gitee.com 
HostName gitee.com
IdentityFile C:\Users\{current user}\.ssh\gitee_id-rsa
PreferredAuthentications publickey

很好理解,就是配置不同的主机使用不同的密钥文件,别用乱了。

测试一下连通性

ssh key 也创建好了,远程仓库密钥也保存了,本地配置也有了该试一下了,使用命令来看一下是否能正确抵达 git 源

# 输入并运行
ssh -T git@gitee.com

# 首次运行可能会输出结果 xxxx[yes/no] 提示是否continue,输入 yes 并继续即可
# xxxx [yes/no] yes
The authenticity of host 'gitee.com (212.64.62.174)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitee.com,212.64.62.174' (ECDSA) to the list of known hosts.
Hi 试试手气! You've successfully authenticated, but GITEE.COM does not provide shell access.

检查

见过 ssh 有关一番操作后,.ssh 文件夹应该有 6 个文件

  • config
  • gitee_id-rsa
  • gitee_id-rsa.pub
  • github_id-rsa
  • github_id-rsa
  • known_hosts

前5个上文介绍过是手动创建出来的,known_hosts 是在运行 ssh -T 时 continue 后创建的,用于缓存 git 仓库源与ip地址和私钥的数据。极端情况下如果出现因 dns解析、网络问题导致与 git 仓库无法连接时可修改或删除文件

试一下

都配置好,试一下从 gitee 远程 clone 一个仓库到本地,打开 vs code 切换到 git 栏目点击 克隆存储库,输入远程仓库的 ssh 地址如 git@gitee.com:cinlap/learngit.git,选择目标文件夹,如无意外很快就 clone 到本地了

ssh 操作中的一些补充

  • 添加私钥(作用?)

ssh key 创建后添加私钥运行

ssh-add ~/.ssh/gitee_id-rsa $ ~/.ssh/github_id-rsa $ xxx

如果提示 Could not open a connection to your authentication agent 可以先执行以下命令再重新运行 ssh-add

ssh-agent bash
  • 查看私钥列表和删除
# 查看
ssh-add -l
# 清空
ssh-add -D
原文地址:https://www.cnblogs.com/cinlap/p/12894667.html