天天看點

運維人員應人手一個GitHub帳号

最近在學習一些新東西,在實驗環境下自己寫的一些程式或腳本,覺得以後還能用的上,就想儲存下來;

如果儲存在本地或者U盤之類的移動存儲中,以後重裝系統或者U盤丢失也就損失了,而且作為一個IT從業人員,這年頭檔案不存儲在雲端,都不好意思說自己是混IT圈的;

最終選擇了GitHub這個代碼托管的網站,以後如果寫出點像樣的開源軟體,還可以得到衆多開發者的跟進,想想就挺美的!!!

是以今天就花了點時間整理了一下官方的配置使用文檔,以幫助有同樣需求且看英文文檔費勁的同行們!

##############################################################################

Git和GitHub的差別

GitHub術語解析

配置使用

注冊GitHub帳号

建立Git

建立庫

複制庫

社交化

Git是一個分布式的版本控制系統,與SVN類似;最初由Linus Torvalds編寫,用作Linux核心代碼的管理。在推出後,Git在其它項目中也取得了很大成功,尤其是在Ruby社群中,是以目前有很多著名的項目都使用Git進行版本控制;

Blame

Git中的“blame”特性描述了檔案的每一行的最近一次修改資訊,包括修改内容、作者和時間等;可用于追蹤某軟體新特性的添加及引起bug的送出操作;

Repository

庫是GitHub的最基本元素,可想象成本地的項目檔案夾;一個庫包含所有的項目檔案(包括幫助文檔),并儲存每個檔案的修改曆史;庫可以有多個合作開發者,也可以作為公共庫或私有庫的形式開發;

Private Repository

私有庫,是指隻能被庫的建立者或者合作開發者檢視并編輯的庫,需要付費使用;

Branch

分支是一個庫的并行版本,包含在庫内,允許獨立的開發而不影響現有主分支(primary or master)的運作;當在分支的修改需要釋出時,就可以将分支合并(merge)至主分支(master branch),這樣利于多人的分布式開發;

==============================術語分類解析分割線==================================

Pull Request

即代碼合并請求,由其它開發者或使用者向項目的collaborators提議的修改請求,collaborators覺得修改資訊合理有效即接受,否則拒絕;

Merge

将一個分支中的修改内容應用到另一個分支的操作就做合并;若兩個分支内的修改内容無沖突,則可以通過合并請求(a Pull Request)或指令行(the command line)完成合并操作;

Clone

克隆,是将GitHub上的庫檔案整個複制到本地主機上,可以實作離線修改,等上線後再同步至Github上的庫即可;

Commit

送出資訊,或者稱為修改資訊,是個人送出的對檔案的修改記錄;

Fork

對其它開發者的庫的個人複制,複制的庫存在你自己的賬戶上,你可以自行修改項目内容而不會影響原始的庫,也可以将自己的修改通過合并請求(a pull request)的方式請求原始庫的開發者更新你的修改;

Fetch

取回,表示從線上的庫上擷取最新的修改資訊而不需要合并代碼,取回的代碼可以與你本地的分支代碼進行比較;

Push

推送,表示将本地的修改内容推送至線上的庫,這樣其它的開發者就可以通過GitHub網站通路到你的修改内容了;

Remote

遠端版本,即類似于GitHub.com的非本地主機的項目版本,可以連接配接至本地克隆的版本以實作内容同步;

User

使用者,指個人注冊的GitHub賬戶,每個使用者都可以擁有多個公共庫或私有庫,也可被邀請加入organizations或稱為collaborates;

SSH Key

私鑰,是GitHub用以驗證你本地主機的身份的,并用此密鑰加密傳輸GitHub網站和你本地主機的資料傳輸,以保證安全性;這個是需要在“Set up Git”步驟中配置的;

Organizations

組織,即多個開發者組成的團體,可包含衆多的庫和開發團隊;

Collaborator

合作開發者,被庫的所有者邀請共同開發某一項目,擁有對庫的讀寫權限;

Contributor

貢獻者,對項目有所貢獻(如送出代碼,修複bug等)的開發者,但不具備合作開發者的通路權限;

Diff

差異,指2個commit或儲存的改變間的差異,可以很直覺的看出一個檔案自上次commit後增加或删除的内容;

Open Source

開源,原指可自由使用、修改和傳播的軟體,現擴充為一種超越軟體的合作哲學,即工件(working materials)線上可用,可被任何人複制(fork)、修改(modify)、讨論(discuss)、并提出修改意見(contribute to);

Markdown

一種輕量級的标記語言,書寫簡單,不同于html,無需大量的<tag>就可以實作内容的格式化;GitHub上的衆多庫中的幫助文檔就是這種格式,如README.md;

Upstream

上遊,對于一個branch或者fork來說,源庫的主分支即是其它修改資訊的源頭,被稱為upstream,相對的其它branch或fork就被稱為downstream了;

注冊賬戶

賬戶注冊沒什麼好說的,按照步驟進行即可;

注:别忘記郵箱認證哦,以後的代碼送出都需要依賴你自己設定的主郵箱位址(Promary GitHub Email)哦

建立Git(Set up Git)

向GitHub送出你的使用者名和郵箱位址,用以辨別你的commit;

<a href="http://s3.51cto.com/wyfs02/M01/27/55/wKiom1Nx2SbCryt7AADUimIDKA4801.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/27/55/wKioL1Nx2RGR0w6zAADeydp7E9E876.jpg" target="_blank"></a>

注:使用者名可以随意,但郵箱位址與綁定在GitHub帳戶上的必須一緻;

本地儲存密碼,避免每次通過https去clone一個庫時都需要提供使用者名和密碼

<a href="http://s3.51cto.com/wyfs02/M02/27/56/wKiom1Nx2W6yWVvUAAJMsprEejw996.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/27/56/wKiom1Nx2Y6iIpfQAAFNJrVqOus818.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/27/55/wKioL1Nx2YfzkXm1AACo7VlIS4g719.jpg" target="_blank"></a>

注:在下載下傳git-credential-osxkeychain時,也可将位址直接複制到浏覽器,下載下傳速度會更快哦!

若想通過ssh方式去clone自有的庫,則需先配置SSH key

生成公鑰和私鑰

<a href="http://s3.51cto.com/wyfs02/M00/27/56/wKiom1Nx2luRpetqAAHKQBhxyoA134.jpg" target="_blank"></a>

複制公鑰内容并配置至GitHub中:cat ~/.ssh/id_rsa.pub

<a href="http://s3.51cto.com/wyfs02/M02/27/56/wKiom1Nx2eeQY6M3AARsDBsCAU8875.jpg" target="_blank"></a>

驗證測試

<a href="http://s3.51cto.com/wyfs02/M02/27/57/wKiom1Nx23yygigCAANNeQYNxyg550.jpg" target="_blank"></a>

注:個人測試未通過,總是逾時,隻能暫時使用HTTPS方式了。

建立庫(Create repositories)

在GitHub上建立一個新的repo

<a href="http://s3.51cto.com/wyfs02/M00/27/58/wKioL1Nx24mBEgIRAAt-nOnTL-Y018.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/27/59/wKiom1Nx29fR3SJNAAQg65ekKW8513.jpg" target="_blank"></a>

為新建立的repo添加幫助文檔README

建立README檔案

<a href="http://s3.51cto.com/wyfs02/M00/27/5B/wKiom1Nx3ATQRj3BAAKv7BCYGbk348.jpg" target="_blank"></a>

送出README檔案

<a href="http://s3.51cto.com/wyfs02/M01/27/5C/wKioL1Nx2_OxVui6AAE9uPQhfSA072.jpg" target="_blank"></a>

推送所送出的内容

<a href="http://s3.51cto.com/wyfs02/M02/27/5C/wKioL1Nx3AiTxeA8AAG86B-1Zuo860.jpg" target="_blank"></a>

為README檔案增加内容後再次送出推送

1

2

3

<code>vi</code> <code>README </code><code># 編輯内容</code>

<code>git commit -a </code><code># 編寫内容儲存後,會自動送出的</code>

<code>git push origin master </code><code># 再次推送一次,以更新GitHub上的内容</code>

通路驗證

<a href="http://s3.51cto.com/wyfs02/M01/27/5C/wKiom1Nx3FrQvvBkAANhgojzUTA398.jpg" target="_blank"></a>

複制庫(Fork repositories)

<a href="http://s3.51cto.com/wyfs02/M02/27/5C/wKioL1Nx3EqQMjWLAAD449ndAyw411.jpg" target="_blank"></a>

克隆複制的庫至本地

<a href="http://s3.51cto.com/wyfs02/M00/27/5C/wKioL1Nx3GDxFG0AAADaw0eGByw192.jpg" target="_blank"></a>

修改遠端指向源庫,而非你自己fork後的庫;庫被克隆後,預設會建立一個指向fork後的庫的遠端origin哦

<a href="http://s3.51cto.com/wyfs02/M01/27/5C/wKioL1Nx3HrT2jINAAIvsBlaJlo741.jpg" target="_blank"></a>

推送送出至自己fork後的庫中

<a href="http://s3.51cto.com/wyfs02/M01/27/5C/wKiom1Nx3LyytGdYAACxkk2IaIg451.jpg" target="_blank"></a>

從源庫擷取更新,并合并進自己fork後的庫的主分支中

<a href="http://s3.51cto.com/wyfs02/M00/27/5C/wKioL1Nx3KbA_w7_AAEoEYHnCYg943.jpg" target="_blank"></a>

建立分支并設定為目前活動分支

<a href="http://s3.51cto.com/wyfs02/M01/27/5C/wKioL1Nx3LuQa97lAAEC11xK7_o135.jpg" target="_blank"></a>

分支間切換

<a href="http://s3.51cto.com/wyfs02/M02/27/5C/wKioL1Nx3M_Ti8cnAAD7fjj2zZM347.jpg" target="_blank"></a>

合并分支并删除

<a href="http://s3.51cto.com/wyfs02/M01/27/5C/wKiom1Nx3Q_DawK5AAFB3Gw8oYQ867.jpg" target="_blank"></a>

社交化(Be Social)

開始找朋友,可以關注某些技術大牛的随時更新哦

<a href="http://s3.51cto.com/wyfs02/M02/27/5C/wKiom1Nx3TODanaKAADAEmzmG7o418.jpg" target="_blank"></a>

追蹤某個項目

<a href="http://s3.51cto.com/wyfs02/M00/27/5C/wKioL1Nx3SGj_ETNAADsAioCy4w127.jpg" target="_blank"></a>

通過發送Pull Request,将自己的修改代碼送出給源項目的合作開發者,以貢獻自己的微薄之力

<a href="http://s3.51cto.com/wyfs02/M02/27/5C/wKioL1Nx3Wyi1uyCAACmTbyGK6s930.jpg" target="_blank"></a>

處理事件Issues,主要是指追蹤項目出現的問題的集中地

<a href="http://s3.51cto.com/wyfs02/M02/27/5D/wKioL1Nx3YrA0seeAAAgv_TyK9E368.jpg" target="_blank"></a>

建立組織,合作開發

<a href="http://s3.51cto.com/wyfs02/M02/27/5D/wKiom1Nx3duzHMQYAAFvvGVjuwo014.jpg" target="_blank"></a>

标星收藏感興趣的項目

<a href="http://s3.51cto.com/wyfs02/M00/27/5D/wKioL1Nx3dTxCASoAAHlKx_e5pY181.jpg" target="_blank"></a>

好了,一個簡單的GitHub就配置完成了,盡情在本地開發代碼,然後上傳GitHub托管吧,媽媽再也不用擔心我的代碼丢失啦!

本文轉自 xxrenzhe11 51CTO部落格,原文連結:http://blog.51cto.com/xxrenzhe/1410809,如需轉載請自行聯系原作者

繼續閱讀