在某乎上刷到一條關於 GitHub 的留言,如下:

點贊人數還不少,這說明還真有不少工科生不會用 GitHub,你看大小寫都沒有區分(手動狗頭)。所以我就想寫篇文章科普下,“新手如何使用 GitHub?”
01、GitHub 是什麼
維基百科是這樣定義的:
GitHub 是通過 Git 進行版本控制的軟體原始碼託管服務平臺,由 GitHub 公司的開發者 Chris Wanstrath、PJ Hyett 和 Tom Preston-Werner 使用 Ruby on Rails 編寫而成。
那 Git 又是什麼呢?
再來看維基百科的定義:
Git 是一個分散式版本控制軟體,最初由林納斯·託瓦茲創作,於 2005 年以 GPL 協議的形式釋出,最初目的是為更好地管理 Linux 核心開發。
簡單點說就是,Git 是一個命令列工具,一個分散式的版本控制系統。它可以在背後默默地幫你管理和跟蹤程式碼的歷史版本,就好比一個時光機,讓你在程式碼出錯時不至於手足無措,快速回退到之前的歷史版本。
想了解更多 Git 方面的知識,可以點選這個連結跳轉:
https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F
很多初學者誤認為 Git 就是 GitHub,但其實不是的。GitHub 是一個程式碼託管網站,只不過背後使用了 Git 作為版本管理工具。主要服務就是將你的專案程式碼託管到雲伺服器上,而非本地硬碟上。類似的網站還有 gitlab.com 和 gitee.com(國內版,中文名叫碼雲)。
02、GitHub 可以做什麼
Do whatever you want.
上面這個答案是創始人之一 Chris Wanstrath 說的,我表示無法反駁。
1)託管程式碼
GitHub 會自動幫你記錄程式碼的修改,在必要的時候,能夠幫助你快速回退到之前的歷史版本。
2)搜尋開源專案
GitHub 是世界頂級開發者的聚集地,在這裡你幾乎可以找到任何你想要的東西。上面分享有許多優秀、著名的開源專案,在遵守其 License 的前提下,你可以免費使用、下載這些開源專案。這也是 GitHub 最為吸引人的地方。
通過下面這個網址可以檢視 GitHub 上 TOP 200 的優質開源專案:
其中就包含了我前段時間給大家推薦的 GitHub 上最勵志的計算機自學教程:

中文版離線 PDF 下載地址如下所示:
關於優質專案的搜尋,你可能需要一些技巧:
你可能還需要一些方法:
3)使用 GitHub Pages 搭建一個免費的部落格網站
GitHub Pages 提供靜態網頁託管服務,它直接從 GitHub 上的倉庫獲取 HTML、CSS 和 JavaScript 檔案,然後構建併釋出網站。
配合 Jekyll、Hexo、Hugo、Pelican、Gridea 等第三方靜態模板系統可以快速搭建一個漂亮的部落格網站。比如說我的個人部落格用的就是 Jekyll,訪問地址如下:
4)學習,提升能力
GitHub 有太多太多優質的教程資源,只要你肯去挖掘。下面這個網址列出來的資源都不錯。
比如說面試和刷題:

下面這個網址列舉了一些非常不錯的書單:
5)提升影響力
你可以將自己的開源專案釋出到 GitHub 網站上,專案越受歡迎獲得的 Star 越高,說明業界對你的能力越認可。一份優秀的 GitHub 主頁,能為自己的簡歷潤色不少。
我最喜歡的兩個實戰專案(推薦過無數次了),來自我的好朋友江南一點雨和 macrozheng。
微人事(19.2k star)的地址:
電商系統(43.1k star)的地址:
當你看到這麼多 star 的專案,並且真的是名副其實的好專案,是不是就特別佩服它們的作者,實話實說,我既是他們的朋友也是他們的粉絲。
6)其他
- 圖床,單純地把 GitHub 做一個網盤。
- BBS,單純地交友互動聊天吹逼。
- 翻譯,之前有阿里的朋友就利用 GitHub 重寫了一本《Java 併發程式設計》,線上訪問地址:
離線版的 PDF 下載地址:
03、註冊 GitHub 賬號
說了這麼多 GitHub 的好處,還等什麼,趕緊去註冊一個 GitHub 賬號吧!
一個 GitHub 賬號除了可以作為交友的名片,當然也可以用來登入一些英文的學習網站,比如說 GeeksforGeeks:

04、下載 GitHub 桌面版
當然可以直接在 GitHub 網頁上操作,不過,對於新手來說,一個 GitHub 桌面版更方便、更直白、更傻瓜式一些。

05、建立新專案
我現在要寫一個《教妹學Java》的專欄,需要一個倉庫來儲存程式碼,怎麼做呢?
開啟 GitHub 桌面版,選擇「File」→「New Repository」。然後填寫倉庫名、簡介,選擇倉庫存放的本地路徑,就可以點選「Create Repository」 建立新專案了。

建立完成後,可以在網頁端看到該倉庫。

(咦,怎麼剛建立就有 star 了?)
06、fork 專案
如果你在逛 GitHub 的時候,發現了一些不錯的專案,想佔為己有,那太方便了,只需要一個 fork 就能搞定。
前幾天,我發現了一個很有意思的專案:state-of-the-art-shitcode,中文譯作垃圾程式碼書寫準則。不過,程式碼示例是用 JavaScript 編寫的,並且中文翻譯得很爛。

怎麼辦呢?fork 它,然後就可以重製成 Java 版,並且按照我的風格進行翻譯。

07、克隆專案到本地
GitHub 的一個好處就是,它把專案存放在雲端,當你需要的時候,只需要克隆到本地就可以了。
開啟 GitHub 桌面版,選擇「File」→「Clone Repository」。 可以直接克隆你賬號下的專案,包括你建立的、fork 的、star 的。

也可以通過 URL 的形式進行克隆,這時候,還可以指定碼雲上的專案進行克隆。

08、編輯專案
建議你在電腦上安裝 Sublime Text,一款顏值非常高的文字編輯器,安裝成功後,GitHub 桌面版預設自動使用它來關聯專案。

開啟後,是這樣的(見下圖),不得不說,顏值真的高。

編輯一段文字後儲存,可以在 GitHub 桌面版看到發生變化後的檔案。

填寫檔案更改後的描述就可以點選「Commit to master」(GitHub 從 10 月份起將 master 更名為 main)按鈕提交了。

點選「Push origin」 可以同步到 GitHub 雲端倉庫。
09、回退到歷史版本
如果一不小心提交錯了,怎麼辦呢?
點選「History」 皮膚,找到你要回退的歷史版本,右鍵選擇「Revert this Commit」。

再次點選「Push origin」就可以了。

10、同步雲端
GitHub 可以多人協作,如果本地想和雲端保持同步,可以在 GitHub 桌面版上點選「Fetch origin」

如果發現本地和雲端有不一樣的地方,就可以點選「Pull origin」 從雲端拉取了。

11、還想進階
通過以上這些基本操作,我想你一定會用 GitHub 了。

反正入門嘛,先不要去管 issue 啊、pr 啊、wiki 啊,能夠迅速地通過實戰得到反饋對於學習一門新的技能來說實在是太重要了。只要入了門,有了信心,你會愛上 GitHub 的。
如果你不滿足於現狀,還想更進一步,可以到 GitHub 官方按照課程進行學習。

除此之外,我再推薦給你一本不錯的入門書籍《GitHub入門與實踐》:

碼字不易,希望你們能夠喜歡,如果能夠對你起到一點點幫助,那就太好不過了!
溫馨提醒一點,記得讓它躲進收藏夾吃灰哦,順帶點個贊就更好了!