编辑
2025-01-10
工具
00

目录

1. SSH 协议
2. HTTP 协议
3. 配置文件

本人目前在某公司实习,公司的 Git 使用的是 SSH 连接,然后我想摸鱼 (在 Github 上开发自己的项目),于是遇到几个问题

  1. Github 的代码推送不上去
  2. Github 的 commit 记录中的用户不是我的 Github 账号

首先 Git 支持两种协议管理远端仓库,分别是 SSH 和 HTTP/HTTPS

1. SSH 协议

SSH 的链接像这样:git@github.com:arch-desgin/arch-ui-vue.git,本地关联这个远端仓库的方式可以是

bash
git remote add origin git@github.com:arch-desgin/arch-ui-vue.git

然后我们新增了 commit,git push 一下,会发现推送不上去,需要配置 SSH Key,具体方法可以搜索一下,最终你可以在 ~/.ssh 目录下得到两个文件

把公钥放到代码托管平台,例如 github 上

本地再使用 Git 推送时,就可以根据有公私钥,推送代码到仓库了

同时,这套公私钥可以用于多个平台,账号(即将公钥复制到各个平台各个账号),不过注意别被盗了

或者还可以考虑配置多个 SSH Key,比如这篇文章 https://gitee.com/help/articles/4229

其中关键的点就是 ~/.ssh/config 文件,通过配置不同平台的 SSH key,实现多个平台开发

bash
# gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitee_id_rsa # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id_rsa

2. HTTP 协议

HTTP 协议链接像这样 https://github.com/arch-desgin/arch-ui-vue.git,同样方式管理远端仓库

首次 push 代码时,会要求输入账号密码,Github 是 Acess Token

输入密码之后,下次提交就不需要再次输入密码了,这是因为使用了凭证存储,也就是 git-credential-manager 工具 (默认安装),它的模式可以分为

  • 不缓存模式
  • cache 模式,凭证保存在内存中,15分钟后清除
  • store 模式,存放在 home 目录下
  • osxkeychain 模式,会存放在各个系统的管理密码的应用中,比如 Mac 就会存放在"钥匙串"中

一般情况下,git credential 默认开启了,而且是 osxkeychain 模式,以至于这种方式非常安全。 我们可以在"钥匙串"中访问到密码

不过我发现一个极其恶心的问题,我并不知道密码是真的存在了 git credential 中,还是哪里,因为我删除,"钥匙串"中对应的密码后,再推送代码,它又给我一个新的密码了,比如我修改了密码,显然是无法推送的,出现了需要重新登录的 Dialog,但是把它关闭之后,你猜怎么着,又成功了 |300 |300 但是,在终端中是完全不受影响的,修改密码之后,就是没有再出现过密码,推送失败 |300 于是我想到了,那一定是 VSCode 终端在作妖,或者 VSCode 的某个插件,比如 Gitkraken ,之后再更新 这块小问题的思路,有点像公司方法论中的:查找问题的关键是复现问题

3. 配置文件

Git 配置从高到低分为

  • .git/config 当前仓库的配置文件,使用 --file 选项修改,具有最高优先级
  • ~/.gitconfig 当前用户的配置文件,可以使用 --global 选项修改
  • /etc/gitconfig 系统基本的配置文件,可以使用 --system 选项修改

应用:

  • 有这三种配置文件可以解决:比如公司开发使用单独的邮箱、用户名,通过全局配置实现,自己摸鱼 (Github 开发)可以配置仓库的 user 属性
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:pepedd864

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!