楔子
試想以下兩種場景:
- 場景一
《鹿鼎記》中青木堂香主韋小寶每次見手下都要來兩句:
** 地震高崗,一派西山千古秀,**
** 門朝大海,江河河水萬年流。**
這還是短的,有的暗號更長,說錯一個字或順序不對都要從頭再來,韋小寶想明明已經很熟了還要每次都來這套,你說煩不煩,肯定煩,但為了反清復明的大業,韋香主你就忍了吧!!! - 場景二
時光穿梭到了現代,《偽裝者》的軍統特工或地下黨們為了在公眾場合掩人耳目,便以胸前插支或用兩半撕開的紙幣接頭交換情報,既能驗證雙方身份又快速簡潔不易察覺!!!
很顯然,以上兩種場景中后者在現實使用中更優,體現諜者隨時代發展而進步。
身份驗證古往今來都不可或缺,場景一就像每次我們做事前都要原班輸入賬號密碼一樣繁瑣又無奈;場景二就是這種無奈之下的改進措施,由賬號-密碼轉化為SSH免密登陸。
SSH密鑰對采用的是RSA非對稱加密算法,而由賬戶-密碼方式的身份驗證到SSH免密登錄絕不僅僅是技術上應用,更是設計思想的巧妙運用。我們在做技術的過程中遇到的問題往往是有多種解決方案,就是“怎么著都行”,而在這多種方案的比較、分析中往往能迸發出奇妙創新的思維火花,也就是換個思路問題竟如此簡單的那種極爽的感覺,這就是程序員的快樂!!!
筆者在此就以上傳本地項目到GitHub為例子,假設讀者朋友們沒有任何賬號+沒有裝載任何客戶端,期望能讓大家吃著火鍋唱著歌就能把事兒給辦了。
一、安裝Git
- Git命令行版本 從terminal即終端輸入命令進行操作。
- Git可視化管理工具 可視化頁面點點鼠標就能完成各項操作,建議使用SourceTree,程序員喜聞樂見的git可視化工具。
根據筆者經驗,命令行操作沒有SourceTree等可視化工具操作方便、簡潔、直觀,但是一步一步的命令行更便于我們理解git版本控制的原理,還可以做一些更細致的操作。本人一般都是用命令行提交、拉取、合并代碼,但是用SourceTree查看提交記錄和沖突部分的代碼,非常直觀。
- git 操作細節可看文章繆雪峰的git教程
二、GitHub部分
1. 注冊GitHub賬號
登陸GitHub官網,按引導注冊即可
2. 創建 respository(代碼倉庫)
建好的代碼倉庫自帶.git文件進行倉庫管理,即我們常說的版本控制,respository存放并管理著庫內所有文件、資源、代碼的存取、更新、記錄等,和現實中物流倉庫功能很相似。
無圖無真相,觀眾朋友們按圖索驥就行了。
3. 建立本地與GitHub的交互通道
說白了,GitHub上我們建立的是開源項目,也就是人人看得見,摸得著(都能下載、克隆),但只有本賬號持有者才有更改的權限(人人都能直接改就亂套了)。現在問題來了:GitHub怎么識別賬號持有者呢?
3.1. GitHub上直接操作
很顯然這種方式是通過賬號-密碼的形式直接從官網進行操作的,看似簡單直接,但看看就行了,因為不支持文件夾,這對單獨或簡單創建和上傳少許文件比較適用,而我們的項目數不勝數的文件文件夾,顯然不行。
3.2. GIt可視化工具管理倉庫文件
利用Git可視化工具如SourceTree進行代碼操作,每次push操作時都會驗證用戶合法性,即需要輸入相應GitHub賬號-密碼。
3.3. SSH免密登陸
簡單點說就是,用自己的電腦生成了一對密鑰對,私鑰文件留在本機特定地方,公鑰放在GitHub特定地方,每次進行網路交互時,一旦雙方密鑰能對上,就說明用戶身份有效。有興趣的同學可看看下面文章:
ssh 免密碼登錄
賬號-密碼式的用戶驗證方式就像是每次見面都先來一通“天王蓋地虎”的說道,不煩才怪。而SSH免密驗證就像是雙方拿著兩半撕開的紙幣,合上即代表自己人,一切盡在不言中,是不是酷斃了!!!
3.3.1. .ssh文件
cd ~/.ssh/
,若無此文件夾需要創建一個 mkdir .ssh
3.3.2. 創建SSH密鑰對
在 ~/.ssh/
目錄下,ssh-keygen -t rsa -C "your_email@example.com"
后面“ ”里面改成你的郵箱就行,回車會提示你輸入密鑰文件名,然后輸入密碼什么的,既可以根據提示設置,也可以無視一直回車下去。
3.3.3. 將SSH密鑰公鑰放進GitHub
open . 打開.ssh,找到公鑰文件(.pub)打開復制其文本內容
登陸GitHub,進入Settings
3.4. 測試SSH密鑰設置是否成功
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.
經驗證SSH密鑰文件名不是id_rsa 和 id_rsa.pub好像是不行,知道原因的同學還請指教一二。
三、上傳本地項目到GitHub
1. 克隆代碼倉庫
cd 到存儲代碼倉庫的目錄
// 根據自身情況跟換后面的代碼倉庫目錄
git clone git@github.com:guoxiangyang110/HelloWorld.git
之后同樣有2條路可以走
- git可視化工具
將clone下來的代碼倉拖拽到SourceTree工程列表中,然后進行各種操作 - git命令行
常用命令 | 作用 |
---|---|
git init |
git 倉庫初始化 |
git add |
添加文件至git緩存 |
git commit |
提交文件到本地代碼倉庫 |
git push |
提交更新到遠程(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
或命令行add
、commit
、push
到GitHub
即可。
四、刪除GitHub上的代碼倉庫
操作簡單但一開始不太好找,以圖說明:
翻滾到左下方,點擊確定刪除
輸入要刪除的倉庫名稱,確定刪除
他山之石
本文特別感謝包括并不限于以下優秀文章:
http://www.open-open.com/lib/view/open1454507333214.html
http://blog.csdn.net/leikezhu1981/article/details/47664215
http://www.lxweimin.com/p/9c918d96f941