寓教於樂,用玩遊戲的方式學習 Git!

  • 2019 年 10 月 6 日
  • 筆記

作者 | mozlingyu

來源 | 少數派

用遊戲的方式來學習,是一種有趣而高效的方式。

從剛接觸電腦時的打字練習軟體 金山打字通,到程式猿寫程式碼的利器 Vim 都有小遊戲(金山打字通遊戲、VIM Adventures)來幫助我們入門。

當你的目標從掌握技能轉變為打通遊戲之後,學習本身也就不再痛苦。在完成每一關的過程中,都能增加我們的技能熟練度和成就感。

而 Learn Git Branching,就是一個用小遊戲帶你入門的 Git 的網站。

00.為什麼要學習 Git

Git 是一種分散式的版本管理系統,作用和網盤有點類似,但是功能性和靈活性都更強大。

如果你是一個電腦專業的學生或從業者,Git 的重要性不言而喻;但是對普通人而言,Git 也有備份數據、保存歷史記錄等重要作用。

不怕斷電、斷網

數據無價,但很多時候我們無法保證自己的電腦不出問題。有很多時候我們會懷念上一個小時、前天或不久以前自己寫的那些文字、畫過的那些圖,如何完好的保存數據是個永遠的話題。將工作保存在雲端也許會增加我們內心的安全感,這也是很多人會用網盤進行備份的原因。

Git 的「本地提交」較好地解決了這個問題,它的工作方式大概是這樣:即使沒網路,我們也可以先工作,等到連上網路後再打包上傳。每個文檔的名字都寫有主要的工作(修改)內容,而且我們還能清楚地看到文檔之間的區別和改動,Git 還會自動把歷史紀錄保存下來。

對於越來越多開始從事移動辦公、遠程工作的人來說,由於網路環境不穩定,即使他不編程,也能從 Git 中受益。

嚴肅寫作的一個個節點

iOS 上的知名筆記工具 Drafts 會在你寫作時,每隔一分鐘幫你保存一份當前文檔的「快照」,這樣就可以方便地找回之前的某個寫作版本了。你覺得不滿意而刪除的一段文字,總可以在歷史版本中找回,很貼心。

保存寫作的歷史版本其實就是建立寫作節點的過程。而這,也是 Git 所擅長的。

對於論文、書籍這些嚴肅的寫作內容來說,我們在寫作的時候不會頻繁的更改。深思熟慮之後,在一個節點時,我們有必要保存一下這一階段的成果。同時,我們在對以前工作進行修改之後,也希望能便利地顯示和以往的不同。

Git 最原本的使用方式

Git 是一個分散式版本控制軟體,於 2005 年以 GPL 發布。它最初是為更好地管理 Linux內核 開發而設計。它不需要伺服器端軟體就可以運作版本控制,使得源程式碼的發布和交流極其方便。

GitHub 是通過 Git 進行版本控制的源程式碼託管服務,我們每個人都可以把自己的程式碼託管在上面。同時,也可以看看別人寫的程式碼,相互交流,極大方便了軟體項目的多人協作開發,也推動了開源軟體社區的壯大。

GitHub 所具有的社交性讓很多人戲稱為最大的同性交友網站(男性用戶占絕大多數)。如果你願意,可以把別人的程式碼下載到本地隨意修改,放心這不會影響他人。

總之,在 GitHub 上,大家都用同一種語言進行程式碼倉庫的操作,那就是本文的主角:Git。

如果你想開始學編程,一定想記錄一下自己成長的路徑。想必也一定會去 GitHub 看一看,這時學一下 Git 不是順理成章的嗎?

01.怎麼學習 Git

曾經我在好奇心的驅使下去學習最淺顯易懂的 Git 教程《廖雪峰的 Git 教程》。

但經過一段時間之後,我發現自己僅僅會使用 git clonegit addgit commitgit push 等簡單語句。之後多次查看 git rebase 的用法,也一直沒有理解。

我們來看看最基本的幾條命令有什麼作用:

git clone 克隆:下載遠程程式碼倉庫到本地;  git add 添加:添加文件、修改後的文件到暫存區;  git commit 提交:建立本地倉庫的工作節點;  git push 推送:將本地倉庫推送到遠程程式碼託管服務、網站。

就像很多次把學過的知識還給老師的經歷,這次只記住幾個簡單命令的過程依然沒讓我失望。這些命令是我平時使用最多的,所以記得最牢,而其他命令只能用到時再去查了。沒有經過實踐的知識好像無法停留在腦子裡。

前幾天在 twitter 上閑逛,發現了一個可以互動式學習 Git 的網站 Learn Git Branching。嘗試了一下發現效果真的很棒,有一種在玩編程遊戲的感覺。

回想啃著玩 Human Resource Machine 的經歷,證明不在於知識本身多艱深,只要學習曲線不陡峭,咱都能爬上去。

Learn Git Branching

https://learngitbranching.js.org

網站是有中文的,而且介面很不錯,給人的第一印象很友好。

關卡選擇介面可以看到,有「主要」、「遠程」兩部分。每一部分的內容不多,覆蓋了基本的用法。每一關都是一個模擬的小項目,通過上手操作很容易獲得代入感。程式碼本身的用法在玩遊戲的過程中領會到,這種感覺很棒,讓人上癮。

教程的每一關都有引導,告訴你示範動作是怎樣的、會有什麼結果。稍作了解之後就可以自己上手探索。模仿之前教的動作,做錯了可以 reset 命令從頭開始。完成之後,可以用 show solution 命令查看答案。這種即時回饋的學習讓過程變得有趣。

從 Git 到 GitHub

說了這麼多,簡單講一下具體的流程:

  1. git clone 下載程式碼到本地。
  2. 創建了自己的文件,或者進行了修改,可以用 git add . 把所有文件加入暫存區,等待建立節點。
  3. git commit -m "這一階段工作描述" 盡量細化你的節點,別做了很多工作才提交一次呀。
  4. git push 把之前建立的一系列節點推送到 GitHub 發布、保存。
  5. git pull 將 GitHub 的改動同步到本地,比如你在辦公室電腦的改動同步到家裡,或者多人協作項目中他人的改動同步到本地。

總結一下就是:「記錄修改、本地提交、傳到雲端」的過程。

02.其他學習資源

除了之前文章中提到的 廖雪峰的 Git 教程 外,還有很多學習資料。比如:

Pro Git 第二版

http://bit.ly/2H7A7Lg

這本書被譽為 Git 學習的聖經,作者是 Scott Chacon 和 Ben Straub。Scott Chacon 在 GitHub 工作,自稱 Git 的佈道者。你可以在網站上免費閱讀這本書,也可以下載他們提供的電子版本。

git-recipes

http://bit.ly/2Z4jw0M

它 童仲毅 (geeeeeeeeek@github) 對很多英文資料進行翻譯、整理的集合教程。包含入門基礎、進階知識和應用範例。這些英文資料主要包括 GitHub 競爭者 Bitbucket 的 Git 教程。

Udacity Git 課程

http://bit.ly/2H5PZhi

Google無人車之父 Sebastian Thrun 創辦的 優達學城(Udacity)上面的 免費 Git 課程。這門課程由優達學城與 GitHub 共同製作,介紹進行版本控制的基礎知識,重點講解 Git 版本控制系統以及 GitHub 協作平台。如果你更喜歡這種上課方式,這門課程隨時都可以開始學習。

happypeter1983 的 Git 影片教程

http://bit.ly/2Z6rS87

這份教程就更進階了一些。講到了一些高級命令的用法。當然還有其他學習資源。

以上,便是今天的分享,覺得內容對你有所幫助的,還請點個「在看」支援,謝謝各位。