深入 git 必看:git 是如何被創造的?講述 git 的誕生史、核心思想及其父:Linus Torvalds

git 是世界上最先進的分佈式版本控制系統,沒有之一。

前言

本文簡要闡述了 git 的誕生歷程,以及其作者 Linus Torvalds(林納斯·託瓦茲,同時也是 Linux 之父)對 git 的思考。對開發者而言,瞭解 git 產生的背景和設計理念,有助於更好地理解和使用 git;對管理者而言,則能更好地對企業項目開展有效的管理。

本文授權並同步首發於歡聚時代旗下技術公衆號:YYGeeker。更多幹貨,歡迎訂閱。
未經許可,嚴禁轉載。
本文閱讀用時:8 分鐘。

歡聚時代(YY)及虎牙(HUYA)面試內推請移步文末。

年輕時的 Linus Torvalds

芬蘭,被譽爲千湖之國。這是一個由衆多湖泊和島嶼組成的國家,準確的說,全國共有 188,000 個湖泊和 179,000 個島嶼。

1969 年,Linus Torvalds 生於芬蘭一個知識分子家庭。父親 Nils Torvalds 畢業於赫爾辛基大學,是一名活躍的電臺記者。母親 Anna Torvalds 同樣畢業於赫爾辛基大學,也是一名記者。有趣的是,他的祖父奧 Ole Torvalds 也是一名記者。除此之外,Torvalds 的外祖父 Leo Tornqvist 是芬蘭第一批統計學教授。優秀的家庭背景爲 Torvalds 奠定了接受良好教育的基礎。Torvalds 在 11 歲時,應其外祖父要求用 BASIC 語言編寫一些統計學方面的小程序。大衆普遍認爲,這是他編程經歷之始。

在這樣的背景下,似乎註定了這位少年擁有不平凡的成長經歷。

CC BY-SA 4.0 圖片版權許可

1988年,Torvalds 進入赫爾辛基大學計算機科學系就讀。在興趣的趨勢下,Torvalds 創造併發布了自制的操作系統,並將其命名爲 Linux。1996 年碩士畢業並移居美國,後擁有美國國籍。2003 年,爲專心維護 Linux 從全職公司辭職。

芬蘭人性格內斂,這與 Torvalds 的行事方式不謀而合。但他對開源的信念是近乎執着的,爲此不少樹敵。

赫爾辛基大學,成立於1640年,是芬蘭最大且歷史最悠久的最高學府。Torvalds 一家三口都畢業於此。

與 BitKeeper 分道揚鑣:git 誕生的導火索

在 git 誕生之前,Torvalds 選擇使用 BitKeeper 進行 Linux 版本管理。BitKeeper 是一個閉源的商業軟件,這個決定長期受到社區的質疑和爭議。

公有領域 圖片版權許可

2005 年,一位 Linux 開發成員 Andrew(Samba 協議之父)寫了一個可以連接 BitKeeper 倉庫的外掛,因此 BitMover 公司(BitKeeper 持有者)認爲他反編譯了 BitKeeper。BitMover 決定中止 Linux 免費使用 BitKeeper 的授權。最終 Linux 團隊與 BitMover 磋商無果,Torvalds 決定開發自己的版本管理系統。

十天後,git 誕生了。

你沒有看錯。git 從開始到誕生,Torvalds 這位天才只用了 10 天的時間。

極具前瞻性的三個訴求

在確定開發 git 前,Torvalds 對市面上多個版本管理方案進行過評估,但現有的方案都不令人滿意,最終決定開發自己的版本管理系統。

Torvalds 認爲,健壯的版本管理系統應當有以下三個特性

  • 可靠性(reliable)
  • 高效(high-performance)
  • 分佈式(distributed)

這三個特性,被視爲 git 的核心靈魂所在,深遠的影響了 git 及其他 SCM 的後續發展

可靠性(reliable)

數據的存入取出必須是安全的、一致的。所有行爲都要校驗,倉庫任何部分不允許篡改。在今天看來,這並不是什麼高明之舉,但在當時,絕大多數的 SCM 都做不到這一點。那時候,人們依賴保護中央服務器來保證數據不被篡改,而不是依靠版本管理自身的設計來保證。

Torvalds 認爲,應當通過算法來保證,倉庫任何一個字節被篡改,都能夠被發現。

高效(high-performance)

這是 git 極具優勢的特性。Torvalds 認爲,版本管理的所有操作都必須在毫秒級內完成:這是對 svn 最大的批評。查日誌、拉分支、合併、提交這些高頻率操作,必須能夠在本地能夠完成,而不是等待服務器響應。這一特性直接決定了 git 能夠被廣泛傳播。

作爲對比,svn 每一步操作都在等待數據包成爲了人們口中的詬病。

分佈式(distributed)

以往人們在備份資料上花了很大精力:傳統的中央服務器,資料受損是災難性事故。現在,所有人電腦中的 git 倉庫都是一致的,每個人的倉庫都是完整的副本。完整的副本意味着可以在本地做所有事;允許相互同步促使它被設計成爲自帶數據校驗。

最終,Torvalds 圍繞着這三個訴求,用 10 天的時間創造出 git。

事實證明,這些想法是極具前瞻性的。git 在解決原有訴求的前提下,還解決了長久以來的一些痛點。

刺破痛點

從工程的角度看,許多 SCM 方案都有各自的殺手鐗,例如 BitKeeper 在超大型項目的優越性能,以及 SVN 精準的權限控制。但在實際生產方面,則有所欠缺。

代碼政治

大多數 SCM 都存在權限爭議問題,特別是在超大型項目上。開發者最常見的發問是,你憑啥不給我權限?在有些企業,代碼管理被淪爲政治工具,權限則被視爲權利的象徵。分佈式的 git 則不存在此問題,如果你擁有該倉庫,你就擁有了所有的權限。

提交粒度

如果「提交代碼」容易對他人造成影響,那麼就沒人願意頻繁提交。在開發階段,由於代碼始終無法完美(例如,包含測試代碼、代風格錯誤、還有待改動),以至於總是無法提交代碼(強行提交將造成他人無法運行)。導致的結果是,大量改動堆積,最後一次性提交。這樣的後果是,單個 commit 提交粒度極大,還會導致合併、code review、乃至回滾的困難。而 git 的 commit 操作不需要推送到遠程,因此隨意提交也不會不影響他人。

創建新分支

在許多 SCM,創建新分支是「重量級操作」,並且所有人可見。在許多項目看來,創建新分支是重大行爲。因爲創建新分支影響重大,因此開發人員不會隨意創建新分支。這直接導致了同一個分支上需要承載大量的業務。而由於 git 的操作是本地化的,你可以隨意創建分支(毫秒級操作)並行多個子迭代,迭代完畢且合併分支後,再刪除分支標籤。最後推送到遠程服務器,他人並不知曉你創建過什麼分支。

開源,共築,影響力

革新總是艱難的。當 Linux 開發團隊決定使用 git 作爲版本管理的時候,社區反對聲音並不小,理由是 git 太難用了。實際上,確實是這樣的,Torvalds 也承認了這點。

技術服衆還不夠。Torvalds 的領導力是驚人的,他發動社區力量讓大家投入到 git 的開發當中。隨着開發的深入,git 命令變得更簡單,更易用。另一方面,開源有助於集思廣益,並且避免腐敗。

後來的事,大家都知道了。git 逐漸被大衆接受,爲 git 提供託管服務的 github 於 2008 年 2 月上線,從此 git 點亮萬家燈火。

github-free 圖片版權許可

另外,2016 年 5 月,BitKeeper 宣佈以 Apache 2.0 許可證開源。但人們說,太晚了。

今天的 Torvalds

Torvalds 與妻子 Tove 育有三名孩子。Tove 曾獲得六次芬蘭空手道冠軍頭銜。

2000 年,在時代 100 人:本世紀最重要的人物投票中,他位居第 17 名。

2004 年,他被評爲世界最有影響力的人之一。

2010 年,宣誓成爲美國公民。

2018 年 10 月,在休假反省一個多月之後,Torvalds 繼續接管內核開發。Torvalds 在維護項目上一向言行激烈,不少人因此而受到傷害。他表示「對自己過去的行爲表示反悔,對因爲他的言行而受到傷害的人表示道歉」。

CC BY 3.0 圖片版權許可



作者:Abel_嘉俊
鏈接:https://www.jianshu.com/p/8821e9846773
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章