注冊(cè)GitHub賬號(hào),只要點(diǎn)擊導(dǎo)航條中的“Signup and Pricing”,或者點(diǎn)擊首頁(yè)中那個(gè)大大的“Plans, Pricing and Signup”按鈕,即進(jìn)入收費(fèi)方案介紹及注冊(cè)頁(yè)面。
收費(fèi)?不必?fù)?dān)心,開(kāi)源軟件托管是GitHub的基石,對(duì)于開(kāi)源項(xiàng)目的版本庫(kù)(即非私有版本庫(kù))的托管,GitHub是免費(fèi)的。在收費(fèi)方案及注冊(cè)頁(yè)面中,最上面的就是針對(duì)于開(kāi)源的免費(fèi)托管方案,如圖2-1所示。
至于本頁(yè)其他付費(fèi)方案,將在后面的章節(jié)介紹。點(diǎn)擊免費(fèi)方案右側(cè)的“Create a free account”按鈕,就進(jìn)入到注冊(cè)頁(yè)面,如圖2所示。
GitHub的注冊(cè)頁(yè)面非常簡(jiǎn)潔,只有登錄ID,郵件地址和口令需要輸入。要注意的是每個(gè)郵件地址只能注冊(cè)一次。
注冊(cè)完畢即以新注冊(cè)的賬號(hào)自動(dòng)登錄。登錄后即進(jìn)入用戶的儀表板(Dashborad)頁(yè)面。首次進(jìn)入的儀表板頁(yè)面還會(huì)在其中顯示GitHub BootCamp(GitHub 新手訓(xùn)練營(yíng))的鏈接,以幫助新用戶快速入門(mén)。如果圖2-3所示。
儀表板頁(yè)面是用戶最重要的頁(yè)面,因?yàn)閯?chuàng)建新項(xiàng)目(新版本庫(kù))的鏈接就位于該頁(yè)面。重新設(shè)計(jì)的GitHub用戶界面[[1]](http://www.worldhello.net/gotgithub/02-join-github/010-account-setup.html#idpycharm git ssh3)中跳轉(zhuǎn)到儀表板頁(yè)面的鏈接不像之前那么直觀,鼠標(biāo)移動(dòng)到頁(yè)面左上角的“github”文字圖標(biāo)會(huì)發(fā)現(xiàn)此圖標(biāo)可以點(diǎn)擊,該文字圖標(biāo)即是進(jìn)入儀表板頁(yè)面的快捷。
在頁(yè)面右上方顯示當(dāng)前登錄用戶的名稱和頭像。圖2-3中顯示登錄用戶為 gotgithub,而用戶頭像因?yàn)樯形丛O(shè)置所以顯示為缺省圖片——GitHub吉祥物Octocat的剪影。在頁(yè)面右上方還有三個(gè)圖標(biāo),從左至右分別是:通知、賬號(hào)設(shè)置和退出。點(diǎn)擊賬號(hào)設(shè)置圖標(biāo)對(duì)賬號(hào)進(jìn)行進(jìn)一步設(shè)置,如圖2-4所示。
賬號(hào)設(shè)置的第一個(gè)頁(yè)面pycharm git ssh是對(duì)用戶公開(kāi)身份信息進(jìn)行設(shè)置,所有內(nèi)容均為可選項(xiàng),如果填寫(xiě)將顯示在個(gè)人頁(yè)面中,并能被所有人訪問(wèn)。注意修改用戶頭像需要訪問(wèn)第三方頭像設(shè)置網(wǎng)站:gravatar.com,Gravatar網(wǎng)站提供的頭像服務(wù)是一個(gè)通用服務(wù),可為大部分Web應(yīng)用所使用。
圖2-4中還顯示了當(dāng)前用戶使用的GitHub托管方案(Free)和使用統(tǒng)計(jì)。因?yàn)楫?dāng)前注冊(cè)用戶選擇的是免費(fèi)方案,所以可用的私有版本庫(kù)數(shù)量和私有空間的協(xié)同者數(shù)目都是零。免費(fèi)方案擁有300MB托管空間,因當(dāng)前尚未創(chuàng)建版本庫(kù)托管,所以空間占用為零。GitHub對(duì)開(kāi)源軟件的300MB托管空間限制并非硬性限制,可以申請(qǐng)擴(kuò)增托管空間,如果不存在濫用情況的話。
點(diǎn)擊菜單中的“Account Admin”,可以更改口令、查看API Token、修改用戶名,以及刪除自身賬號(hào),如圖2-5所示。
其中API Token是和用戶口令相關(guān)的密鑰,當(dāng)用戶口令更改時(shí)API Token也隨之更改。GitHub的某些應(yīng)用會(huì)使用API Token進(jìn)行身份認(rèn)證,從而避免直接使用用戶口令造成泄露的風(fēng)險(xiǎn)。API Token若泄露的危害要遠(yuǎn)遠(yuǎn)小于口令泄露,這因?yàn)锳PI Token不能用于登錄GitHub網(wǎng)站等,而且一旦API Token泄露可以很容易通過(guò)更改口令的方式更換API Token。
點(diǎn)擊菜單中的“Email Addresses”,可以添加和刪除郵件地址,如圖2-6所示。GitHub允許為一個(gè)賬號(hào)綁定多個(gè)郵件地址,以便能夠?qū)it版本庫(kù)中的提交(提交者以 “用戶名 <郵件地址>” 的格式給出)正確對(duì)應(yīng)到GitHub賬戶。
GitHub為托管的Git版本庫(kù)提供SSH協(xié)議支持,即用戶可以用公鑰認(rèn)證的方式連接到GitHub的SSH服務(wù)器。下面的示例用ssh命令連接github.com的SSH服務(wù),登錄用戶名為git(所有GitHub用戶共享此SSH用戶名,不要寫(xiě)成其他)。
$ ssh -T git@github.com
Permission denied (publickey).
上面的示例顯示登錄失敗,這是因?yàn)槲覀兩形丛贕itHub賬戶中正確設(shè)置公鑰認(rèn)證。圖2-7顯示的是GitHub的SSH公鑰設(shè)置界面。
要想向GitHub添加SSH公鑰,首先要確保正確生成了對(duì)應(yīng)的公鑰/私鑰對(duì)。關(guān)于SSH公鑰認(rèn)證,在我的《Git權(quán)威指南》一書(shū)的“第29章使用SSH協(xié)議”中有詳細(xì)介紹,這里僅做簡(jiǎn)要的介紹。
GitHub的SSH服務(wù)支持OpenSSH格式的公鑰認(rèn)證,可以通過(guò)Linux、Mac OS X、或Cygwin下的ssh-keygen命令創(chuàng)建公鑰/私鑰對(duì)。命令如下:
$ ssh-keygen
然后根據(jù)提示在用戶主目錄下的.ssh目錄中創(chuàng)建默認(rèn)的公鑰/私鑰對(duì)文件,其中/.ssh/id_rsa是私鑰文件,/.ssh/id_rsa.pub是公鑰文件。
注意私鑰文件要嚴(yán)加保護(hù),不能泄露給任何人。如果在執(zhí)行ssh-keygen
命令時(shí)選擇了使用口令保護(hù)私鑰,私鑰文件是經(jīng)過(guò)加密的。至于公鑰文件~/.ssh/id_rsa.pub則可以放心地公開(kāi)給他人。
也可以用ssh-keygen命令以不同的名稱創(chuàng)建多個(gè)公鑰,當(dāng)擁有多個(gè)GitHub賬號(hào)時(shí),非常重要。這是因?yàn)殡m然一個(gè)GitHub賬號(hào)允許使用多個(gè)不同的SSH公鑰,但反過(guò)來(lái),一個(gè)SSH公鑰只能對(duì)應(yīng)于一個(gè)GitHub賬號(hào)。下面的命令在~/.ssh目錄下創(chuàng)建名為gotgithub的私鑰和名為gotgithub.pub的公鑰文件。
$ ssh-keygen -C "gotgithub@gmail.com" -f ~/.ssh/gotgithub
當(dāng)生成的公鑰/私鑰對(duì)不在缺省位置(~/.ssh/id_rsa等)時(shí),使用ssh命令連接遠(yuǎn)程主機(jī)時(shí)需要使用參數(shù)-i <filename>指定公鑰/私鑰對(duì)。或者在配置文件/.ssh/config中針對(duì)相應(yīng)主機(jī)進(jìn)行設(shè)定。例如對(duì)于上例創(chuàng)建了非缺省公鑰/私鑰對(duì)/.ssh/gotgithub,可以在~/.ssh/config配置文件中寫(xiě)入如下配置。
Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gotgithub
將SSH私鑰添加到ssh代理。
ssh-add ~/.ssh/gotgithub
好了,有了上面的準(zhǔn)備,就將~/.ssh/gotgithub.pub文件內(nèi)容拷貝到剪切板。公鑰是一行長(zhǎng)長(zhǎng)的字符串,若用編輯器打開(kāi)公鑰文件會(huì)折行顯示,注意拷貝時(shí)切莫在其中插入多余的換行符、空格等,否則在公鑰認(rèn)證過(guò)程因?yàn)榉?wù)器端和客戶端公鑰不匹配而導(dǎo)致認(rèn)證失敗。命令行下可直接用pbcopy命令[2]將文件內(nèi)容拷貝到剪切板以避免拷貝錯(cuò)誤:
$ cat ~/.ssh/gotgithub.pub | pbcopy
然后將公鑰文件中的內(nèi)容粘貼到GitHub的SSH公鑰管理的對(duì)話框中,如圖2-8所示。
設(shè)置成功后,再用ssh命令訪問(wèn)GitHub,會(huì)顯示一條認(rèn)證成功信息并退出。在認(rèn)證成功的信息中還會(huì)顯示該公鑰對(duì)應(yīng)的用戶名。
$ ssh -T git@github.com
Hi gotgithub! You've successfully authenticated, but GitHub does not provide shell access.
如果您未能看到類(lèi)似的成功信息,可以通過(guò)在ssh命令后面添加-v參數(shù)加以診斷,會(huì)在冗長(zhǎng)的會(huì)話中看到認(rèn)證所使用的公鑰文件等信息。然后比對(duì)所使用的公鑰內(nèi)容是否和GitHub賬號(hào)中設(shè)置的相一致。
$ ssh -Tv git@github.com
...
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/jiangxin/.ssh/gotgithub
...
debug1: Entering interactive session.
Hi gotgithub! You've successfully authenticated, but GitHub does not provide shell access....
賬號(hào)設(shè)置的最后一項(xiàng)是向GitHub提供你的求職信息。GitHub作為一個(gè)優(yōu)秀程序員的聚集地,已成為一個(gè)IT人才招聘的途徑,如果你需要找工作的話,提供簡(jiǎn)歷并打開(kāi)“Available for hire”選項(xiàng),GitHub會(huì)向你推薦合適的工作機(jī)會(huì)。如圖2-9所示。
[1]
https://github.com/blog/1007-skinny-header
[2]
Mac下的命令行工具pbcopy和pbpaste可以在命令行下操作剪貼板,
Linux下的命令行工具xsel亦可實(shí)現(xiàn)類(lèi)似功能。
在Linux下可以創(chuàng)建別名用xsel命令來(lái)模擬pbcopy和pbpaste 。
alias pbcopy='xsel --input'
alias pbpaste='xsel --output'








