關於一台電腦使用多個GitHub賬戶管理代碼的記錄

@參考原文


記錄這個操作是因為需要將一些代碼放出去到公共倉庫上以便使用github pages線上預覽今天頁面的功能,但是碰到了一個很狗血的問題,雖然最後莫名其妙的解決了,但還是不知緣由,希望能在評論區得到解答

整體操作如下

一、github賬號的準備工作

1、確認ssh.key

首先確認自己系統內有沒有 ssh key
隨便找個地方打開git命令窗口,依次輸入以下指令,查看本機ssh.key情況:

cd ~/.ssh
ls *.pub 

如果是第一次使用,應該是沒有的,如果不是,也沒有修改過密匙名稱,會有一個id_rsa.pub。
如果有多個ssh.key文件且有空餘未使用的,那就直接跳過生成新的ssh.key文件這一步。

2、生成新的ssh.key

由於我需要登錄兩個帳號,所以在已經存在的 key 的基礎上,再生成一個 key:

ssh-keygen -t rsa -C "新的github註冊郵箱"

-t 是使用的算法,一般都選擇 rsa -C 為備註,一般以郵箱作為備註,提示保存文件時以 id_rsa_github 保存,其中github字段是自定義的,主要用於區分第一個密鑰id_rsa

使用ls *命令查看所有存在的文件,它們存放的路徑是C:\Users\username\.ssh,下面是我電腦現在有的密匙及相關文件

其中以 .pub 結尾的為公鑰文件,用於填寫在GitHub網站,同名不帶 .pub 後綴的為私鑰文件,自己保存不要泄漏,known_hosts 文件為已知 host 緩存,目的是加快 ssh 訪問速度。

3、為新的github賬戶添加ssh.key

登錄 GitHub 在賬戶Settings > SSH and GPG keys > New SSH key > Add key將生成的 ssh key 的 .pub 文件中的內容粘貼進去。在複製時,由於直接用記事本打開.pub文件或者其他方式打開複製,可能會報錯,所以我選擇的是使用指令複製:

clip < ~/.ssh/id_rsa_github

id_rsa_github是你新建的ssh.key文件的.pub文件名


二、代碼託管

1、在我切換倉庫時,我用的辦法直接粗暴:直接刪除需要上傳文件夾的.git文件夾,需要說明的是這個文件夾是個隱藏文件夾,需要打開顯示隱藏文件夾選項。

2、然後開始進行git代碼託管的常規操作

git init 
git remote -v
git remote add origin github倉庫地址
git add ./
git commit -m"注釋內容"
git checkout -b 新建分支名
git push origin 自定義分支名

說明:git init初始化,git remote -v查看遠端倉庫連接情況,git remote add origin github倉庫地址添加遠程倉庫,或者更改倉庫git remote set-url origin github倉庫地址,(中間省略,自行百度即可),說明一下我創建分支是使用的git checkout -b 分支名命令,是因為我覺得這樣更方便快捷,創建新分支並進入,也可以選擇先使用git branch 分支名創建新分支,再使用git checkout 分支名切換分支。

我的操作如下:

然後重點來了!

push提交的時候報錯了!!忘了截圖,大概和下面這個相似

ERROR: Permission to hbxn740150254/BestoneGitHub.git denied to Chenzuohehe. 
fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.

我查看了很多大哥的解決辦法,都不行,怎麼辦?!
在經歷了痛苦的幾個小時漫長摸索之後,突然想改一下git倉庫地址類型,就是在連接遠程倉庫時的那個地址類型,一般git倉庫的連接地址類型有兩種,一種是ssh模式,用[email protected]:開頭的,一種是https模式,用//github.com/開頭的,我之前一直用的ssh的地址,在一直提交不上去的時候,我試着換成了https模式的地址,卧槽!就提交上了!!!

是的,很迷惑,之前是可以使用ssh模式的地址的,但是這次不行,雖然最後問題是解決了,但是原因未知。

另外,在提交的時候,應該會需要輸入幾次github登錄賬戶和密碼,以及git賬戶名等。


雖然不明所以,但是還是做好記錄。一是為遇到同樣問題的朋友們提供一點思路,二是避免再次碰到二次懵逼。

附上大佬總結的@github常見操作和報錯處理辦法

Tags: