Git - XKCD 漫畫註解
簡明註解
Git 特有的分散式架構看起來非常酷,但是,與其它版本管理系統相比,Git 使用者的實際體驗卻要複雜許多。對於初級程式設計師來說,學習 TFS 或 Subversion 大約只需二十分鐘的時間,然而,僅僅學習使用 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,專業漫畫家,前美國宇航局工程師,生活在美國麻省薩默維爾。
感謝:Qingniu 幫助審閱並完成校對。
原載:明珠夜話
相關文章
- 極客漫畫:當 Git 有了智慧Git
- 漫畫講解HDFS原理
- 靈魂畫手:漫畫圖解 SSH圖解
- 腐漫網,腐女漫畫網,漫畫網站網站
- 漫畫:Git 二分 Debug,火速定位出錯程式碼!Git
- 漫畫趣味圖解雲端計算的起源圖解
- 【漫畫講技術】CSS系列漫畫教程(6-10講)CSS
- 【漫畫講技術】CSS系列漫畫教程(11-15講)CSS
- 動漫&漫畫&音樂&小說 免費
- 漫畫|面試風暴面試
- 看漫畫,學 WebAssemblyWeb
- 漫畫區塊鏈區塊鏈
- 漫畫:三分鐘瞭解敏捷開發敏捷
- [譯] 漫畫圖解 JavaScript 引擎: let jsCartoons = ‘Awesome’;圖解JavaScriptJS
- 極客漫畫:Windows 更新Windows
- 漫畫:面向 API 開發API
- 極客漫畫:Bash on WindowsWindows
- 漫畫:什麼是機器學習機器學習
- 漫畫解說2013年IT行業大事件行業事件
- 漫畫版:什麼是機器學習?機器學習
- 【漫畫】資料雲,真香在哪?
- 極客漫畫:AI 監管AI
- 漫畫:80 埠爭奪戰
- 漫畫理解執行緒池執行緒
- 程式設計師幽默漫畫程式設計師
- 漫畫:如何寫出好程式碼?
- 漫畫:21天自學 C++C++
- git常用命令(詳細註解)Git
- 仿知音漫客漫畫APP--MVP-contract模式APPMVP模式
- MediBang Paint Pro 漫畫及插畫工作軟體AI
- Kinect體感互動解決方案——體感漫畫拍照遊戲遊戲
- 用伊藤潤二漫畫畫風做遊戲?獨遊+漫畫表現力也許是一條捷徑遊戲
- [譯] 漫畫:深入淺出 ES 模組
- 漫畫:Java併發閉鎖CountDownLatchJavaCountDownLatch
- Swift仿寫有妖氣漫畫Swift
- 漫畫:什麼是氣泡排序?排序
- 極客漫畫:程式語言之戰
- 極客漫畫:聊天機器人機器人