本文章是git工具系列的第一章,用於對git工具的簡單介紹!
關於版本控制
版本控制是一種用於記錄隨時間文件或文件集更改以便於能夠在后續工作中重調指定版本的系統。

工作原理是在硬盤上保存補丁集(補丁是指文件修訂前后的變化),通過應用所有的補丁可以重新計算出各個版本的文件內容。


這類系統中,像Git、Mercurial、Bazaar以及Darcs等,客戶端並不只提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。這么一來,任何一處協同工作用的服務器發生故障,事后都可以用任何一個鏡像出來的本地倉庫恢復。因為每一次的克隆操作,實際上都是一次對代碼倉庫的完整備份。
更進一步,許多這類系統都可以指定和若干不同的遠端代碼倉庫進行交互。藉此,便可以在同一個項目中分別和不同工作小組的人相互協作。也可以根據需要設定不同的協作流程,比如層次模型式的工作流,而這在以前的集中式系統中是無法實現的。
git名字的由來
The name "git" was given by Linus Torvalds when he wrote the veryfirst version. He described the tool as "the stupid content tracker"and the name as (depending on your way):
- random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.
- stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
- "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
- "gddmn idiotic truckload of sh*t": when it breaks
git這個詞英文中是“飯桶、爛人”的意思,而且linus喜歡使用自己的名字命名項目,但他也自認為自己是一個自負的人,所以選擇了這個名字,ε=(´ο`*)))唉,大師謙虛至極。
對git之父linus torvalds的采訪1
為何你創造了git?
我一直很不喜歡做原始代碼管理,我覺得那是電腦領域中最無聊的一件事情,我非常討厭原始代碼管理。不過BitKeeper(簡稱BK)出現后,改變了我對原始代碼控制的想法。
BK做對了大部分的事情,它在本機端有一份完整的存儲庫,而且采用分布式的做法非常了不起。分布式原始代碼控制解決了原始代碼控制常碰到的問題----誰有資格改變原始代碼。
借助提供儲存庫給每個使用者,BK解決了這個問題。不過BK也有些缺陷,比如說某些技術決策引起了些問題,但最大的缺點在於BK不是開發原始代碼,所以很多人不願意使用。有幾位我們重要維護人員因為BK可以免費用在開源專案上而使用它,但BK始終沒有普遍的被使用,盡管它幫助了Linux核心的開發,BK仍有不足之處。Andrew Tridgell違反BK的使用原則,對BK開始進行逆向工程。我花了幾個禮拜或是(或是幾個月),居中協調Tridgell跟Larry McVoy,不過顯然沒有多大的幫助。從那一刻起我決定放棄使用BK,但是我也不想回到以前沒有BK的日子。在那時雖然也有一些原始碼控制軟體想采用分散式的做法,但都不成氣候,它們離我效能表現的要求還差一大截,同時我擔心原始碼完整性及作業流程上的問題,索性決定自己寫一個原始碼控制系統。
你是怎么做到這件事情的?
呵呵,其實你可以去Git原始碼的儲存庫看它如何逐漸成形。我大概花一天讓Git能達到自己管理自己的程度(self-hosting),之后我就開始用Git跟Git提交程式碼了。我大部分的工作都在白天完成,不過也有幾天工作到深夜。我覺得最有趣的地方在看到Git如何快速地成形。在Git樹中的第一次提交並沒有寫很多程式,但是已經實作出提交程式碼的基本功能。寫Git並不會很難,比較難的是思考如何Git組織檔案的方式。我想強調,Git從無到有大概花了我十天(包含我第一次用Git提交核心程式碼),而且我也不是焚膏繼晷的完成Git。這都取決對Git的基本概念是否很清楚,早在着手寫Git前,我已經看到其他原始碼控制系統的缺陷。我只是不想重蹈覆轍罷了。
不行不行,酸,酸死我了,為啥我就寫不出來吶!!!