背景

github 不支持 rest 的形式,操作仓库,

( 即账户 + 密码,操作, 不行了 )

github 的仓库操作,支持基于 token 认证的操作

( token-based authentication )

本文写的是,通过 ssh 操作 github 上的 git repo

细节

GitHub 支持 ssh 部署的粒度全面,

  • 可以基于用户,对所有的仓库统一部署

1111——截屏2021-08-18 上午9.20.23.png

  • 可以基于仓库部署

1111-截屏2021-08-18 上午9.21.13.png

那么一个用户创建了多个组织,

每个组织,只有该用户一个人,

怎样统一部署呢?

笔者暂未研究有成,本文接着描述,ssh 分仓库部署

解决,就是通过本地的 ssh 配置文件

~/.ssh/config

修改配置文件

一般我们的配置文件,长这样

Host *   // 通用
  AddKeysToAgent yes      // 添加密钥
  UseKeychain yes         // 使用持久化
  IdentityFile ~/.ssh/id_ed25519          //      文件路径,默认加密方式命名

现在一个 repo, 对应一个 host

添加了,两项配置

Host github1               // 主机
  HostName github.com      //  服务器名
  User git                 //  用户
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_a     // 一个仓库,一个私钥
  
 
Host github2
  HostName github.com
  User git
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_repo2

修改本地 git 仓库的远程路径 remote url

结果为

git remote -v                 
origin github1:AgesX/_off_screen_render.git (fetch)

把对应的公钥,粘贴到 github repo 里面

截屏2021-08-18 上午9.41.28.png

记得勾选,允许写入

以上为,流程的主要环节

下面进入凑字数

cd 一个文件夹,不方便

开发几年后,老眼昏花,

不能准确的拖动一个指定的文件夹

我开发出了, cdc

进入文件夹中,cdc 配合随意拖拽一个子文件到终端

就等于准确,找到想要的文件夹

cd_current(){
  cd "$(dirname "$1")" && pwd
}


alias 'cdc'='cd_current'

查看 git 仓库,基于文件的日志

可以考虑 gitlf

git log file

gitlf_file(){
   git log --follow -p -- "$1"
}
alias gitlf="gitlf_file"


  • 创建密钥

ssh-keygen -t ed25519 -C "dengjiangzhouReal@gmail.com"


  • 提交

git remote set-url origin Mm:AgesX/gcd_


github 文章

生成新 SSH 密钥并添加到 ssh-agent

命令:

ssh-add -K ~/.ssh/id_a

所有的私钥,都要来一遍


邓轻舟
384 声望13 粉丝

我叫邓江洲,准备面试中