今天没吃药 感觉自己萌萌哒~~

链接:https://www.fylstudio.online/2022/02/14/github%E4%B8%80%E4%BA%9B%E9%97%AE%E9%A2%98/

github的一些问题

本文全文手写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、查看所有配置

1
$ git config --list

关于一些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专栏

作者

fyl

发布于

2022-02-14

更新于

2022-02-14

许可协议