GitHub 到底為啥這么受歡迎,我們?yōu)槟阏硪环菔褂霉ヂ?/h1>
GitHub,全世界開發(fā)者的安全空間,在這里,你可以分享你的代碼為大家所用,也可以和全世界的開發(fā)者一起共建完善你的代碼。在這里,你可以學習借鑒前輩的經驗快速提升技能,也可以更好地展示自己的學習成果為未來發(fā)展撰寫自己的名片。本期視頻就由網紅小哥 Siraj 為大家講解 Git 協(xié)議是如何工作的,并教你建立自己的代碼倉庫以及用社交媒體提升你的 GitHub 代碼。

1. 什么是 Git 協(xié)議
你可能會發(fā)現(xiàn) GitHub 有個很鮮明的特色,它允許開發(fā)者通過一個共享界面實現(xiàn)合作,在這里你可以以你認為好的方式修改他人的開放代碼,也可以邀請他人來協(xié)助你完善你的。這種合作就像特斯拉公司要發(fā)布一輛新車型,他們會用一年時間來請負責每個部分的小組進行設計、協(xié)調并與其它小組設計的新特征保持同步,從而實現(xiàn)設計的最優(yōu)化。這是一個充分發(fā)揮民主的過程。

那你可能會疑惑,是什么驅使世界各地的開發(fā)者互相協(xié)作,并且一旦發(fā)生問題,是否有可能修改或還原呢?
答案很簡單,因為使用了 Git 協(xié)議存儲代碼庫。
十幾年前,大名鼎鼎的程序員 Linus Torvalds 正忙于構建一個操作系統(tǒng),并且與其它開發(fā)者一起不斷修改代碼,因此他需要一個方式去追蹤代碼是如何隨著時間更改的,這樣一旦發(fā)生問題可以很輕易的回到之前的版本。一般來說我們會不斷地保存副本并重命名,我想你寫論文也碰見過這種情況:一稿、二稿···絕不修改版本···再次修改版本···這簡直是噩夢,所以 Linus 寫了 Git 協(xié)議,用來提供項目最新的注釋合集和按時間排序的代碼更改歷史。直到現(xiàn)在,Git 協(xié)議幾乎是每一個現(xiàn)代開發(fā)工作流的核心。
2. 如何理解 Git 協(xié)議中的指令
Git 協(xié)議中有大量指令,當你第一次試著去理解的時候它的結構可能令人費解。不過我們還是以特斯拉公司為例。

我們需要研發(fā)新車型,事實上在給定的任意時間我們存在四個版本的設計:(1)實時版本,也就是消費者熟悉的在售現(xiàn)行版本;(2)計劃中明年版本,只要所有小組同意,這個版本將成為新的實時版本,它代表著遠程數(shù)據(jù)庫,儲存了我們最新的優(yōu)化后的設計版本;(3)最新版本充分考慮了其他小組的建議,但還未向其他小組展示并獲得許可,它代表本地庫;(4)開發(fā)中版本,它需要進一步的內測和審核,這是一個緩存區(qū)。
每個階段都對應著不同層次的貢獻,對代碼來說也是一樣,我們的代碼在落地前必須經歷四個階段,每個階段都進一步降低了與其它小組相沖突的風險。
Git 協(xié)議中還有一個聲明,表示我們完成了一個完整的設計并且我們對它十分滿意,Git 協(xié)議中的提交意味著即使還需要測試和審核,我們仍然對自己的設計充滿信息,并且已經對它進行了所有標準化的測試。
3. Git 協(xié)議如何運作
一旦我們準備好將我們的設計展示給其他人,就可以將我們的設計從本地庫復制到遠程存儲庫中,在 Git 協(xié)議中我們可以使用 push 指令,過程存儲庫保存在云端,本地庫則保存在我們的電腦上。一旦所有人都表示滿意,我們就可以將它部署到我們的網站或手機應用上。

在生產中,這實際上不是一個 Git 指令而是代表著從實際版本到生產的過程。
事實上我們可能為每個新版本都建立了存儲庫,但因為他們都很多共同點,我們可以只為每個版本建立分支,分支可以讓我們基于相同的代碼庫保持多個版本。如果使用后發(fā)現(xiàn)在現(xiàn)有版本中加入某個特征會更好,我們就可以用 merge 指令來整合兩個分支。
加入有人推送了一個新的特征或代碼到遠程存儲庫中,我們可以通過 Git 協(xié)議中的 pull 指令提取新特征到我們的本地庫。如果這個新特征與我們的存儲庫沖突,我們可以讓代碼恢復到改變前的狀態(tài),或者調整推送一個更新的版本到遠程存儲庫。
Git 協(xié)議可以幫我們追蹤并快速定位沖突,使得優(yōu)化和修復都更加簡單。
4. 如何使用 Github
我們已經知道 Github 使用了 Git 協(xié)議,我們繼續(xù)建立自己的存儲庫,在完成注冊后然后將它存在 Github 上,這里相當于一個開發(fā)者的社交網絡平臺,我們可以下載最新的 Git 協(xié)議。

我們通過在 Github。com 上使用 git config 指令確定自己的用戶名和郵箱,然后就可以通過在命令行使用 git init 指令建立自己的本地 Git 庫。可以新建一個代碼文件夾,并且通過直接把更改添加到緩存區(qū)來將其添加到 Git。
每一個開發(fā)者只負責自己的分支,我們可以在本地匹配他們,然后提交方案,不同的提交來自于不同的分支,所有分支逐漸導向 master 節(jié)點,這也是為什么 Git 會呈現(xiàn)樹形結構。
GitHub 是一個社交網絡平臺,你可以關注并追蹤其他開發(fā)者的最新代碼,關注你的開發(fā)者越多,他們越有可能提升你的開源項目。而良好的文件記錄極有助于讓其他開發(fā)者關注你的代碼。所以你還在等什么?快加入 GitHub 吧!
視頻原址:https://www.youtube.com/watch?v=Loav1kbA640