Notes

管理多账户

  1. 添加两个key
# 此处用默认文件名(此处生成"id_ed25519")
ssh-keygen -t ed25519 -C "[email protected]"
# 指定一个文件名(注意,全路径)
ssh-keygen -t ed25519 -C "[email protected] -f ~/.ssh/id_personal"

此时,~/.ssh路径下就有了两对公私钥

  1. 手动切换
ssh-add -D
ssh-add ~/.ssh/id_ed25519 # 切换另一个换个私钥名即可

这种做法非常低效,而且容易忘

  1. host映射

~/.ssh/config是配置文件(没有可以新建一个),默认配置为

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

使用ssh-agent添加到keychain中,不使用keychain的话忽略

据说密钥没设密码的话,keychain不会保存(未测)

ssh-add --apple-use-keychain ~/.ssh/id_ed25519
ssh-add --apple-use-keychain ~/.ssh/id_personal

修改配置文件

Host github.com
  HostName github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519
Host personal
  HostName github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_personal

Host就是别名,类似主机头,这样你把git的remote中域名的位置用别名替代使用即可

其实就是git clone personal:work-company/company-project.git, 把github.com换成对应的主机头即可. 也就是说想要无痛完美地工作, 从clone时就要做好

如果是已经存在的仓库:

# 查看当前远程地址
git remote -v

# 修改 origin 的 URL(假设当前是个人项目)
git remote set-url origin [email protected]:personal-user/my-project.git

修改最后一次commit的message

git commit --amend -m"your new message"

假如这个commit已经push到远程仓库,还需要git push --force一下(即-f

修改最后一次commit的author

git commit --amend --author="your name <your email>"
``

## 撤销最后一次push

```bash

git reset --hard HEAD^
#或退到/进到 指定commit_id:
git reset --hard commit_id

git push origin HEAD --force

Backlinks