Git - XKCD 漫畫註解

Jodoo發表於2016-04-01

簡明註解

Git 特有的分散式架構看起來非常酷,但是,與其它版本管理系統相比,Git 使用者的實際體驗卻要複雜許多。對於初級程式設計師來說,學習 TFSSubversion 大約只需二十分鐘的時間,然而,僅僅學習使用 Git 基本功能就需要花費更多的精力。當你使用 Git 時,很容易陷入某種錯誤,要想修復這類問題,往往需要了解一些貌似晦澀的命令才行。除非你是一名 Git 專家,否則在有些情況下,為了更快地解決問題,把一個專案直接刪除,然後從新做一遍,反而是更容易的解決方法。

Git 具備一些其它版本管理系統沒有的功能。(我對此也不是特別清楚,坦白地說,當有人提及這個問題時,通常的反饋都會與架構設計相關。)一般來說,那些 Git 專家之所以喜歡 Git,是因為它的功能比其它的版本管理系統更為強大,但是,這些專家中的一些人常常忽視了 Git 陡峭的學習曲線。很多人(包括我和漫畫中的蛋頭先生)只是知道這個架構很棒,但是在具體如何使用 Git 上,並不是專家。

因此,這幅漫畫就是一個頗具諷刺意味的笑話。在那些整天談論 Git 與絕大多數實際使用 Git 的使用者之間,始終存在著一種衝突或矛盾。這幅漫畫的幽默之處恰好在於,終於有人說出了很多人想說,但又不敢在公開場合說的話(擔心招致其他人嘲笑),實際上,這幅漫畫道出了很多 Git 使用者的心聲。

Git - XKCD 漫畫 #1597

情景對話

蛋頭先生正指向桌上一臺計算機,馬尾辮女士和多發男子就站在其座椅後面。

蛋頭先生:這就是 Git。它通過一種優雅的分散式圖論樹狀模型,幫助我們跟蹤專案協作。

馬尾辮女士:酷斃了,我們應該怎樣使用它呢?

蛋頭先生:不知道。你只需記住這些命令,然後用它們將程式碼同步起來就可以了。如果萬一出現了錯誤,把你現有的程式碼儲存在 Git 之外的任何其它地方,然後刪除這個專案,再然後,下載一個新程式碼副本即可。

標題文字

如果還是不能修復這個問題的話,在一個名叫 git.txt 的檔案裡,有一個我朋友的電話號碼,他對 Git 非常瞭解。你只需經歷若干分鐘『這真是太簡單了,你只需把分支想象為...』這樣的對話,而且,最終你一定能學會那些幾乎可以修復所有問題的命令。

另一個更加詳盡且略帶『偏見』的註解

這幅漫畫就像一場戲劇表演,描述了那些對 Git - 當今最流行的版本管理系統 - 內在機理缺乏瞭解的人,如何在實際工作中錯誤地使用 Git 的場景。Git 之所以變成了笑料,就是因為它的廣泛使用度,以及外在的複雜性與內在設計的簡單性之間的巨大差異導致。在很多 Git 教程和文章裡,作者一般都會採用簡單的例子,因此只需使用少許基本命令即可完成任務。這種現象誤導了潛在使用者,他們以為,想要有效地使用 Git,根本無需額外的研究和學習。

正是由於這個原因,外加 Git 命令在名稱上與其它版本管理系統看起來相似,實則完全不同的差異,引發了許多使用者(包括漫畫中的蛋頭先生)對 Git 的應用從來沒有超越基本命令的範圍。與此同時,為了解決問題,他們寧願採取將程式碼儲存在 Git 之外,下載一個新的副本,或者,在新程式碼副本之上,重來做一遍,而不願意嘗試理解和使用 Git 中的諸多功能,從而真正簡化他們的工作和任務。

每當應用複雜性增加時,例如:一名開發者修改了另一名開發者已經修過的程式碼,或者,因為對一個錯誤行為的一次錯誤撤銷,這種行為很容易破壞一個程式碼庫。為了克服這類問題,蛋頭先生建議馬尾辮女士,在 Git 之外另存一個程式碼副本,當然,這種行為本身,就在一定程度上破壞了使用程式碼版本管理系統的初衷。

在這種情景下,git.txt 是指一個這個開發團隊將一個檔案儲存在程式碼倉庫中,這個就像 readme 一樣的檔案,其實就是一個簡單的文字檔案。通常情況下,這種型別的檔案主要用於提供幫助資訊,如建立資料庫,或者處理不常出現的一些特殊情況。此處提及這個檔案,實際上隱含了一種諷刺,因為每一位開發者都應該很好地理解和使用 Git,它是程式設計師日常工作中的基本工具之一。而且,你必須先學會使用 Git,才可能得到和閱讀這個檔案。

將某個人的電話號碼放入這樣一個檔案中,簡直滑稽可笑,因為:

  • 軟體開發團隊一般都會使用網際網路溝通的方式,
  • 通過電話給團隊成員解釋 Git 完全沒有必要,因為基於網際網路的線上幫助非常方便快捷,而且
  • 在這種情景下,一旦有很多團隊成員通過電話方式尋求幫助的話,那麼,對於在這個檔案中留電話的那位仁兄來說,將會構成很大程度的騷擾。

Git 最早由 Linus Torvalds 設計實現,當然,他就是那個建立 Linux 的傢伙。

簡而言之,程式設計師使用版本管理系統主要是為了跟蹤程式碼變化。大多數版本管理系統都非常相似,如果你瞭解了其中的一種,學習另一種就會變得非常容易。Git 這個版本管理系統,由於採用了完全不同的設計理念和原則,致使絕大多數的程式設計師發覺,要想更好地理解 Git 非常困難(儘管 Git 提供了非常多且非常有用的功能與特性)。蛋頭先生好像就是其中的一員。

XKCD 漫畫 Git Commit 也對 Git 進行了相應的描述。


作者:Randall Munroe,專業漫畫家,前美國宇航局工程師,生活在美國麻省薩默維爾。

原文: XKCD Explain 1597:Git

感謝:Qingniu 幫助審閱並完成校對。

原載:明珠夜話

相關文章