本文全文手写40min,仅记录本次多账号推送遇到的问题
GitHub两个不同账号的推送
第一步:生成不同的SSH KEY
1 2 3 4 5 6 7 8 9 10
| 平常单个账号的生成 ssh-keygen -t rsa -C “your_emial@examle.com” Enter file in which to save the key (/c/Users/idmin/.ssh/id_rsa):/c/Users/idmin/.ssh/id_rsa_这里也可以改rsa文件的名字 ------------------------------------------------------------ 多账号sshkey ssh-keygen -t rsa -f ~/.ssh/id_rsa_改为账号1的名字 或者就默认id_rsa -C "这里是账号1的邮箱" ssh-keygen -t rsa -f ~/.ssh/id_rsa_改为账号2的名字 -C "这里是账号2的邮箱" 例: ssh-keygen -t rsa -f ~/.ssh/id_rsa_work -C "fyl2021@qq.com"
|
第二步:在./ssh文件下的config文件修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| 例: #这是我现在的config文件 #不管是哪个平台的代码托管 只要用到ssh都要在这里添加不同的地址并且设置密钥 # 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/id_rsa
# github_work Host work.github.com HostName github.com IdentityFile ~/.ssh/id_rsa_work User work
# coding Host Coding.net HostName Coding.net PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa
|
第三步:ssh测试
分别登陆两个 github 账号,在 Settings —> SSH and GPG keys 中,点击 “new SSH key”,把 “id_rsa.one.pub” 和 “id_rsa.two.pub“这两个公钥的内容分别添加到相应的账号中。
为了确认我们可以通过 SSH 连接 github,可通过输入下面命令来验证
1 2
| ssh -T git@这里是填你生成的id_rsa的名字.github.com 例:ssh -T git@work.github.com
|
出现下面信息就是成功了
1
| Hi (你的用户名)! You've successfully authenticated, but GitHub does not provide shell access.
|
这就证明你本地已经和github的密钥连接起来了
第四步:取消全局邮箱和用户名配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| # 取消全局 用户名/邮箱 配置 git config --global --unset user.name git config --global --unset user.email
# 设置局部 用户名/邮箱 配置 git config user.name "xxxx" git config user.email "xxxx@xx.com"
************ 如何设置局部? 到你要push的文件夹下输入 git config user.name "你的用户名" git config user.email "你的邮箱"
如何看有没有设置成功? 你可以去那个文件夹自动生成的.git/config 文件中去看 ---------------------------------------------- [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [user] name = Cauchy0821 email = g2582522660@gmail.com [remote "origin"] url = git@github.com:Cauchy0821/CS50.git fetch = +refs/heads/*:refs/remotes/origin/* ----------------------------------------------这样就说明成功修改了
|
第五步:使用 git
原来的写法:
1
| git clone git@github.com: 用户名/learngit.git
|
现在的写法:
1 2 3 4 5 6 7 8 9 10
| git clone git@one.github.com: 第一个账号的用户名/learngit.git git clone git@two.github.com: 第二个账号的用户名/learngit.git
git@后面这部分看第二步 例Host work.github.com 则git@work.github.com
例:git clone git@work.com:Cauchy0821/CS50.git 注意:在github repo复制的是git@github.com:Cauchy0821/CS50.git @后面要自己手动改成你当初设置的样子
|
如果有需要重建 origin,可以执行下面操作
1 2 3 4
| git remote rm origin //清空原有的 git remote add origin git@修改.github.com:one/test.git
这一步也可以在生成的.git/config中看到
|
本地新建仓库
1 2 3 4 5 6 7 8
| # 建立本地仓库 $git init ...//其他操作 $git commit -m "first commit"
# push 到 github上去 $ git remote add origin git@one.github.com:one/test.git $ git push origin master
|
如果遇到分支问题(因为github修改了master和main分支可能会遇到一些情况在github新建的是main推送到了master)
1 2 3 4 5
| git push -u origin master
git push -u origin 分支名
git push -u origin main
|
关于最后推送
1 2 3 4 5 6 7 8 9 10 11 12 13
| git remote add origin git@修改.github.com:one/test.git 在添加好推送的repo地址后 git push origin 分支名 (这里填写你要push的分支名)
--------------------------------- 想推送到其它分支? git branch //查看当前分支情况 git branch 分支名 // 新建一个自己的分支 git checkout 分支名 //切换到新建的分支 git push -u origin 分支名 //将新建分支同步到线上 git push origin 新分支 这样就推送上去了
|
使用中遇到的其它问题在下面更新:
更新中…
关于不常使用github的萌新们一些常用指令
检查是否存在SSH Key
1 2 3 4 5
| cd ~/.ssh ls 或者 ll //看是否存在 id_rsa 和 id_rsa.pub文件,如果存在,说明已经有SSH Key
|
如果没有SSH Key,则需要先生成一下
1 2 3 4 5 6
| ssh-keygen -t rsa -C "你的邮箱" 关于不同账号不同平台的ssh管理在本文上面已经详细介绍
怕复制错??用下面这个指令来复制公钥(.pub后缀的是公钥 也就是要填写到github的sshkey中的密钥) cat id_rsa.pub //拷贝秘钥 ssh-rsa开头
|
验证ssh是否成功
1 2 3
| ssh -T git@github.com //运行结果出现类似如下 Hi 用户名! You've successfully authenticated, but GitHub does not provide shell access.
|
关于用户名和邮箱的配置
1 2 3 4 5 6 7 8 9
| 注意这个是全局配置 git config --global user.name 用户命 git config --global user.password 密码
这个是局部配置(关于局部配置本文也已经详细讲解) git config user.name "用户名" git config user.email "xxxx@xx.com"
git config --list 查看当前的配置信息
|
1、设置用户名
1
| $ git config --global user.name "your name"
|
2、设置邮箱
1
| $ git config --global user.email "your email"
|
2、设置密码
1
| $ git config --global user.password "your password"
|
3、查看所有配置
关于一些git命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| git init (初始化仓库)
git add . (全部添加到缓存区)
git commit -m "备注" (提交到仓库的信息)
git status (查看仓库状态)
git pull (将远程仓库的提交拉取到本地)
git push (将本地的提交推送到远程仓库)
git remote add origin "仓库地址" (连接远程仓库)
git remote -v (查看当前所连接的仓库的地址)
git add . (将所有文件提交到暂存区)
git commit . -m "此次修改的信息" (将所有文件提交到本地仓库)
git clone 仓库地址
git push "仓库地址别名" 分支名 (推送到远程仓库)
想推送到其它分支? git branch git branch 分支名 git checkout 分支名 git push -u origin 分支名 git push origin 新分支
|
本文参考:
同一台电脑上使用两个 github 账号
一台电脑上的git同时使用两个github账户
在github上面创建新的分支
GitHub如何配置SSH Key
git 用户名密码配置
github专栏