虽说现在AI很方便,有问题可以AI提问解决,但还是记录一下。
最近有不同的项目作业,涉及不同的GitHub账号与仓库。
之前比较懒直接临时手动切换,但太麻烦了。现记录一个长期稳定的方法。
要点记录
- 本地可以同时配置多个 GitHub 账号,根据项目,自动使用不同账号。
- 方法:通过 SSH key ,按项目目录,自动区分账号。
1. 为不同账号生成不同 SSH key
创建 ssh 命令:
ssh-keygen-ted25519-C"不同GitHub账号邮箱[私人/工作/学校/其他]"-f$env:USERPROFILE\.ssh\id_ed25519_[区别标签 如personal/work/other]具体例子:
ssh-keygen-ted25519-C"your_email@example.com"-f$env:USERPROFILE\.ssh\id_ed25519_work这个操作会让你设置密码,密码可设可不设。不设置就一路回车。
之后会得到类似文件:
id_ed25519_personal id_ed25519_personal.pub id_ed25519_work id_ed25519_work.pub id_ed25519_other id_ed25519_other.pub其中.pub是公钥,要加到 GitHub。没有.pub的是私钥,不要发给任何人。
2. 把公钥分别加到对应 GitHub 账号
复制某个账号的公钥:
Get-Content$env:USERPROFILE\.ssh\id_ed25519_[你前面做的区别标签].pub具体例子:
Get-Content$env:USERPROFILE\.ssh\id_ed25519_work.pub这个命令会给你一行内容,将整行内容复制。
在GitHub上新建一个SSH:GitHub → Settings → SSH and GPG keys → New SSH key
然后把复制的内容粘贴进去,并保存。
3. 配置 SSH,让它知道不同账号用不同 key
在C:\Users\[你的用户名]\.ssh\下找名叫config的文件,没有就新建一个。
注意!是config文件,不是文件夹!没有任何后缀!
然后写入内容:
Host github-personal [<--这是一个标签,你可以换成任何你想要的名字] HostName github.com User git IdentityFile ~/.ssh/id_ed25519_personal [<--你前面自己起的区别标签] IdentitiesOnly yes Host github-work HostName github.com User git IdentityFile ~/.ssh/id_ed25519_work IdentitiesOnly yes [其他更多...copy下来改内容就好]上面内容意思如下:github-personal用私人 key 访问 github.com;github-work用工作 key 访问 github.com。
4. 测试 SSH 是否连对账号
测试命令:
ssh-Tgit@github-[你的标签]具体例子:
ssh-Tgit@github-work如果出现Hi [标签的账号用户名]! You've successfully authenticated...,说明对接成功。
5. 如何给不同目录设置不同 commit 身份?
打开全局变量:
notepad$env:USERPROFILE\.gitconfig粘贴以下内容:
[user] name = 你的默认名字 email = 你的默认邮箱 [includeIf "gitdir/i:G:/GitHub/personal/"] path = ~/.gitconfig-personal [includeIf "gitdir/i:G:/GitHub/school/"] path = ~/.gitconfig-school [includeIf "gitdir/i:G:/GitHub/other/"] path = ~/.gitconfig-other创建不同的配置:
notepad$env:USERPROFILE\.gitconfig-[你的标签]写入以下内容:
[user] name = 该标签对应的GitHub用户名 email = 该标签对应的GitHub邮箱这样以后只要项目放在对应文件夹里,commit 身份会自动切换。
6. 如何用不同 SSH 地址 clone 仓库?
不使用 HTTPS,用 SSH 克隆。
clone命令:
gitclone git@github-[你的标签]:你的私人用户名/你的私人仓库.git7. 如果我的项目已经 clone 下来了,怎么改成不同的 SSH?
进入项目文件夹,输入命令:
gitremote-v将之前的 HTTPS 连接,改成用 SSH 连接:
gitremote set-url origin git@github-[你的标签]:你的私人用户名/你的私人仓库.git再进行一次检查:
gitremote-v8. 后续新项目确认对应的 GitHub 账号
项目先初始化 Git:
gitinit-bmain检查当前 Git 身份:
gitconfig--globaluser.namegitconfig--globaluser.email如果对应的账号不是你想要的,进行如下修改:
gitconfig user.name"想要修改的GitHub显示名称"gitconfig user.email"想要修改的GitHub绑定邮箱"然后再次确认,当前项目的 Git 身份:
gitconfig user.namegitconfig user.email进行远程 GitHub 仓库连接:
gitremoteaddorigin"仓库的URL"检查确认仓库链接:
gitremote-v最后,提交一次 commit 到仓库,确认提交用户是否正确。