跳至主要内容

什麼是 Git?

Git 是

  • Version Control System VCS
  • 是由 Linux 的作者 Linus Torvalds 創造的
  • 採分散式 (distributed) 架構,所以又簡寫為 DVCS

什麼是 VCS?為什麼要分散式?

VCS 顧名思義,是控制版本的系統,那為什麼需要控制版本呢?

設想一下,你開開心心的更新完一個版本的程式碼,並將你所寫的軟體更新。 接著你快快樂樂地和朋友吃了頓美味的晚餐。 酒足飯飽之際發現你的 Gmail 被塞爆,因為你的顧客在你的新版中撞上了一個惡性的 bug,嚴重影響到他們的使用體驗。

你的直覺是什麼?我想應該跟我差不多:逆回去上個版本不就行了嗎?起碼他們能用。

問題來了:

  • 程式碼都已經被你改了個遍,要怎麼回到上個版本?
  • 假設你有不錯的備份習慣,每次寫完 code 都會製作一個壓縮檔。哪一包是你要的?

除非有良好的檔案整理,才能比較有效率地找出來。但這應該蠻麻煩的,按照我的經驗。

工程師在我看來是一群懶惰的生物,他們總想著如何把自己的工作變簡單。 然後把自己置身危機之中,譬如嘗試做出 AI coder。 回到正題,所以版本控制系統因此而生:它讓你可以

  • 簡單地控制版本
  • 有一個制式的版本歷史以及回滾機制

如此一來便可以讓你可以迅速地找到過去的版本並且把程式碼轉換回去那個時間點的樣子。

至於分散式,這應該比較好想像。因為大家不是共用一台電腦一個資料夾同一個程式碼檔案。

所以要怎麼讓四散各地的大家的工作成果無縫銜接,這就是分散系統的職責。

我們這邊不討論他的架構、設計哲學以及為何可行,有興趣的歡迎去查。

什麼是 Github?

Github 是個:

  • 程式碼協作平台:你可以跟 Google Doc 想在一起
  • 顧名思義,跟 Git 高度整合
  • 可以在上面做些 Git 的操作

一般來說,我們在協作程式時會用 Git 管理版本,並通過 Github 讓大家可以共同工作。