1.問題描述
在使用git將代碼上傳github的時候在最后一部push的時候遇到這個fatal
2.解決方案
由于我原先設置的origin是http協議下的,如下
git remote add origin https://github.com/Charlesbibi/Simple_Cloud.git
http協議下行不通不妨試一試ssh協議下,就有如下解決方案
# 刪除原始origin
git remote remove origin# 使用ssh
git remote add origin git@github.com:Charlesbibi/Simple_Cloud.git# 正常push就沒問題了
git push -u origin main
需要注意的是,使用SSH協議首次需要與github進行認證,具體步驟如下:
打開gitbash,并輸入:(-C 后面對應的是你自己的郵箱,最好跟github綁定的一致)
?ssh-keygen -t rsa -C "xxx@example.com"
會在 .ssh 目錄生產兩個文件:id_rsa(私有密鑰)和id_rsa.pub(公開密鑰)
一路默認就行了(回車)如果想自定義更復雜的可以自行研究研究,讀取公鑰:
cat ~/.ssh/id_rsa.pub
最后將結果復制到 settings - SSH and GPG keys - 左上角New SSH key 中,此時就以及成功完成了,也可以通過命令驗證一下:
ssh -T git@github.com
如果出現如下的提示,則說明ssh可以正常連接使用啦!
3. HTTP和SSH的區別
從認證方式而言
- SSH:使用非對稱加密,需要生成SSH密鑰對,并將公鑰上傳到GitHub賬戶中。
- HTTPS:通常通過用戶名和密碼進行授權,可能更適合那些沒有SSH環境的新手用戶。
從配置復雜度而言
- SSH:初次設置較為復雜,需要生成和上傳SSH密鑰,但之后的使用過程中無需重復驗證。
- HTTPS:相對簡單,不需要額外配置,適合快速開始項目,但每次推送都要輸入密碼。
從安全性而言
- SSH:提供更高的安全性,因為通信過程是加密的,且不傳輸密碼。
- HTTPS:雖然也是加密的,但在企業防火墻內使用可能會受到限制。
從訪問速度而言
- SSH:速度稍慢,因為加密層次更多。
- HTTPS:速度較快,因為通常企業的防火墻會優化80和443端口的通信。
從應用場景而言
- SSH:更適合內部項目或者需要頻繁推送的場景。
- HTTPS:適合開源項目或者對外共享的倉庫,方便他人克隆和讀取。
從兼容性而言
- SSH:在某些嚴格限制出站連接的企業或學校網絡中可能無法使用,因為這些網絡可能不允許通過SSH端口(22)進行通信。
- HTTPS:由于使用的是常見的HTTPS端口(443),通常不會受到這種限制。