SSH免密上傳本地項目到GitHub for mac

楔子

試想以下兩種場景:

  • 場景一
    《鹿鼎記》中青木堂香主韋小寶每次見手下都要來兩句:
    ** 地震高崗,一派西山千古秀,**
    ** 門朝大海,江河河水萬年流。**
    這還是短的,有的暗號更長,說錯一個字或順序不對都要從頭再來,韋小寶想明明已經(jīng)很熟了還要每次都來這套,你說煩不煩,肯定煩,但為了反清復(fù)明的大業(yè),韋香主你就忍了吧!!!
  • 場景二
    時光穿梭到了現(xiàn)代,《偽裝者》的軍統(tǒng)特工或地下黨們?yōu)榱嗽诠妶龊涎谌硕浚阋孕厍安逯Щ蛴脙砂胨洪_的紙幣接頭交換情報,既能驗證雙方身份又快速簡潔不易察覺!!!

很顯然,以上兩種場景中后者在現(xiàn)實使用中更優(yōu),體現(xiàn)諜者隨時代發(fā)展而進(jìn)步。
身份驗證古往今來都不可或缺,場景一就像每次我們做事前都要原班輸入賬號密碼一樣繁瑣又無奈;場景二就是這種無奈之下的改進(jìn)措施,由賬號-密碼轉(zhuǎn)化為SSH免密登陸。

SSH密鑰對采用的是RSA非對稱加密算法,而由賬戶-密碼方式的身份驗證到SSH免密登錄絕不僅僅是技術(shù)上應(yīng)用,更是設(shè)計思想的巧妙運(yùn)用。我們在做技術(shù)的過程中遇到的問題往往是有多種解決方案,就是“怎么著都行”,而在這多種方案的比較、分析中往往能迸發(fā)出奇妙創(chuàng)新的思維火花,也就是換個思路問題竟如此簡單的那種極爽的感覺,這就是程序員的快樂!!!

筆者在此就以上傳本地項目到GitHub為例子,假設(shè)讀者朋友們沒有任何賬號+沒有裝載任何客戶端,期望能讓大家吃著火鍋唱著歌就能把事兒給辦了。

一、安裝Git

  1. Git命令行版本 從terminal即終端輸入命令進(jìn)行操作。
  2. Git可視化管理工具 可視化頁面點點鼠標(biāo)就能完成各項操作,建議使用SourceTree,程序員喜聞樂見的git可視化工具。

根據(jù)筆者經(jīng)驗,命令行操作沒有SourceTree等可視化工具操作方便、簡潔、直觀,但是一步一步的命令行更便于我們理解git版本控制的原理,還可以做一些更細(xì)致的操作。本人一般都是用命令行提交、拉取、合并代碼,但是用SourceTree查看提交記錄和沖突部分的代碼,非常直觀。

二、GitHub部分

1. 注冊GitHub賬號

登陸GitHub官網(wǎng),按引導(dǎo)注冊即可

注冊GitHub賬號

2. 創(chuàng)建 respository(代碼倉庫)

建好的代碼倉庫自帶.git文件進(jìn)行倉庫管理,即我們常說的版本控制,respository存放并管理著庫內(nèi)所有文件、資源、代碼的存取、更新、記錄等,和現(xiàn)實中物流倉庫功能很相似。

無圖無真相,觀眾朋友們按圖索驥就行了。

創(chuàng)建倉庫
配置倉庫信息
倉庫創(chuàng)建完成

3. 建立本地與GitHub的交互通道

說白了,GitHub上我們建立的是開源項目,也就是人人看得見,摸得著(都能下載、克隆),但只有本賬號持有者才有更改的權(quán)限(人人都能直接改就亂套了)。現(xiàn)在問題來了:GitHub怎么識別賬號持有者呢?

3.1. GitHub上直接操作

很顯然這種方式是通過賬號-密碼的形式直接從官網(wǎng)進(jìn)行操作的,看似簡單直接,但看看就行了,因為不支持文件夾,這對單獨或簡單創(chuàng)建和上傳少許文件比較適用,而我們的項目數(shù)不勝數(shù)的文件文件夾,顯然不行。

github直接操作

3.2. GIt可視化工具管理倉庫文件

利用Git可視化工具如SourceTree進(jìn)行代碼操作,每次push操作時都會驗證用戶合法性,即需要輸入相應(yīng)GitHub賬號-密碼。

3.3. SSH免密登陸

簡單點說就是,用自己的電腦生成了一對密鑰對,私鑰文件留在本機(jī)特定地方,公鑰放在GitHub特定地方,每次進(jìn)行網(wǎng)路交互時,一旦雙方密鑰能對上,就說明用戶身份有效。有興趣的同學(xué)可看看下面文章:
ssh 免密碼登錄

賬號-密碼式的用戶驗證方式就像是每次見面都先來一通“天王蓋地虎”的說道,不煩才怪。而SSH免密驗證就像是雙方拿著兩半撕開的紙幣,合上即代表自己人,一切盡在不言中,是不是酷斃了!!!

3.3.1. .ssh文件

cd ~/.ssh/,若無此文件夾需要創(chuàng)建一個 mkdir .ssh

3.3.2. 創(chuàng)建SSH密鑰對

~/.ssh/目錄下,ssh-keygen -t rsa -C "your_email@example.com" 后面“ ”里面改成你的郵箱就行,回車會提示你輸入密鑰文件名,然后輸入密碼什么的,既可以根據(jù)提示設(shè)置,也可以無視一直回車下去。

3.3.3. 將SSH密鑰公鑰放進(jìn)GitHub

open . 打開.ssh,找到公鑰文件(.pub)打開復(fù)制其文本內(nèi)容
登陸GitHub,進(jìn)入Settings

1. 進(jìn)入設(shè)置
2. 添加SSH公鑰
3. 配置SSH公鑰信息
4. 公鑰添加成功
3.4. 測試SSH密鑰設(shè)置是否成功

ssh -T git@github.com

bogon:test2 guoxiangyang$ ssh -T git@github.com
Permission denied (publickey).

修改了密鑰文件名之后就行了:

bogon:~ guoxiangyang$ ssh -T git@github.com
Hi guoxiangyang110! You've successfully authenticated, but GitHub does not provide shell access.

經(jīng)驗證SSH密鑰文件名不是id_rsa 和 id_rsa.pub好像是不行,知道原因的同學(xué)還請指教一二。

三、上傳本地項目到GitHub

1. 克隆代碼倉庫

cd 到存儲代碼倉庫的目錄

// 根據(jù)自身情況跟換后面的代碼倉庫目錄
git clone git@github.com:guoxiangyang110/HelloWorld.git

之后同樣有2條路可以走

  • git可視化工具
    將clone下來的代碼倉拖拽到SourceTree工程列表中,然后進(jìn)行各種操作
  • git命令行
常用命令 作用
git init git 倉庫初始化
git add 添加文件至git緩存
git commit 提交文件到本地代碼倉庫
git push 提交更新到遠(yuǎn)程(GitHub
bogon:HelloWorld guoxiangyang$ git init
Reinitialized existing Git repository in /Users/guoxiangyang/Desktop/Test/HelloWorld/.git/
bogon:HelloWorld guoxiangyang$ git add .
bogon:HelloWorld guoxiangyang$ git commit -m "first commit"
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
bogon:HelloWorld guoxiangyang$ git push origin master:master
Everything up-to-date

2. 上傳本地項目

只需將本地項目添加到clone下來的代碼倉庫里,然后用SourceTree或命令行addcommitpushGitHub即可。

四、刪除GitHub上的代碼倉庫

操作簡單但一開始不太好找,以圖說明:

進(jìn)入項目設(shè)置

翻滾到左下方,點擊確定刪除


刪除項目

輸入要刪除的倉庫名稱,確定刪除


刪除特定項目

他山之石

本文特別感謝包括并不限于以下優(yōu)秀文章:
http://www.open-open.com/lib/view/open1454507333214.html
http://blog.csdn.net/leikezhu1981/article/details/47664215
http://www.lxweimin.com/p/9c918d96f941

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、創(chuàng)建github repository(倉庫) 1-1 登錄github github的官方網(wǎng)址:https:...
    字短情長閱讀 1,421評論 0 0
  • GitHub是基于git實現(xiàn)的代碼托管。git是目前最好用的版本控制系統(tǒng)了,非常受歡迎,比之svn更好。 GitH...
    明月888閱讀 852評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • 自從不上豆瓣之后,就很少再寫過文字了。 這種狀態(tài)持續(xù)時間越久,對于生活的厭煩情緒越是高漲,以至于真的覺得生無可戀的...
    甜瓜瓜閱讀 740評論 0 2
  • 不太滿意……不太好
    墨書竹閱讀 198評論 0 0