關於一臺電腦使用多個GitHub賬戶管理程式碼的記錄

藤井の樹發表於2020-12-31

@參考原文


記錄這個操作是因為需要將一些程式碼放出去到公共倉庫上以便使用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模式,用git@github.com:開頭的,一種是https模式,用https://github.com/開頭的,我之前一直用的ssh的地址,在一直提交不上去的時候,我試著換成了https模式的地址,臥槽!就提交上了!!!

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

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


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

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

相關文章