Can you summarize the following document?
        
  自2002年開始,林納斯·託瓦茲決定使用BitKeeper作為Linux核心主要的版本控制系統用以維護程式碼。因為BitKeeper為專有軟體,這個決定在社群中長期遭受質疑。在Linux社群中,特別是理查德·斯托曼與自由軟體基金會的成員,主張應該使用開放原始碼的軟體來作為Linux核心的版本控制系統。林納斯·託瓦茲曾考慮過採用現成軟體作為版本控制系統(例如Monotone),但這些軟體都存在一些問題,特別是效能不佳。現成的方案,如CVS的架構,受到林納斯·託瓦茲的批評。  2005年,安德魯·垂鳩寫了一個簡單程式,可以連線BitKeeper的儲存庫,BitKeeper著作權擁有者拉里·麥沃伊認為安德魯·垂鳩對BitKeeper內部使用的協議進行逆向工程,決定收回無償使用BitKeeper的授權。Linux核心開發團隊與BitMover公司進行磋商,但無法解決他們之間的歧見。林納斯·託瓦茲決定自行開發版本控制系統替代BitKeeper,以十天的時間編寫出git第一個版本。

  林納斯·託瓦茲諷刺地嘲笑"git"這個名字(在英式英語俚語中表示"不愉快的人")  原始碼的自述檔案進一步闡述了:

  git是用於Linux核心開發的版本控制工具。與CVS、Subversion一類的集中式版本控制工具不同,它採用了分散式版本庫的作法,不需要伺服器端軟體,就可以運作版本控制,使得原始碼的釋出和交流極其方便。git的速度很快,這對於諸如Linux核心這樣的大專案來說自然很重要。git最為出色的是它的合併追蹤(merge tracing)能力。  實際上核心開發團隊決定開始開發和使用git來作為核心開發的版本控制系統的時候,世界上開源社群的反對聲音不少,最大的理由是git太艱澀難懂,從git的內部工作機制來說,的確是這樣。但是隨著開發的深入,git的正常使用都由一些友善的命令來執行,使git變得非常好用。現在,越來越多的著名專案採用git來管理專案開發,例如:wine、等。  作為開源自由原教旨主義專案,git沒有對版本庫的瀏覽和修改做任何的許可權限制,通過其他工具也可以達到有限的許可權控制,比如:gitosis、CodeBeamer MR。原本git的使用範圍只適用於Linux/Unix平臺,但在Windows平臺下的使用也日漸成熟,這主要歸功於Cygwin、msysgit環境,以及TortoiseGit這樣易用的GUI工具。git的原始碼中也已經加入了對Cygwin與MinGW編譯環境的支援且逐漸完善,為Windows使用者帶來福音。

  git和其他版本控制系統(如CVS)有不小的差別,git本身關心檔案的整體性是否有改變,但多數的版本控制系統如CVS或Subversion系統則在乎檔案內容的差異。git拒絕保持每個檔案的版本修訂關係。因此檢視一個檔案的歷史需要遍歷各個history快照;git隱式處理檔案更名,即同名檔案預設為其前身,如果沒有同名檔案則在前一個版本中搜尋具有類似內容的檔案。  git更像一個檔案系統,直接在本機上取得資料,不必連線到主機端獲取資料。 每個開發者都可有全部開發歷史的本地副本,changes從這種本地repository複製給其他開發者。這些changes作為新增的開發分支被匯入,可以與本地開發分支合併。  分支是非常輕量級的,一個分支僅是對一個commit的引用。  git是用C語言開發的,以追求最高的效能。git自動完成垃圾回收,也可以用命令codice_1直接呼叫。  git儲存每個新建立的object作為一個單獨檔案。為了壓縮儲存空間佔用, packs操作把很多檔案(啟發式類似名字的檔案往往具有類似內容)使用差分壓縮入一個檔案中(packfile),並建立一個對應的索引檔案,指明object在packfile中的偏移值。新建立的物件仍然作為單獨檔案存在。repacks操作非常費時間,git會在空閒時間自動做此操作。也可用命令codice_2來直接啟動repack。packfile與索引檔案都用SHA-1作為校驗和並作為檔名。codice_3命令做校驗和的完整性驗證。  Git伺服器典型的TCP監聽埠為9418。

  Git有兩種資料結構:可變的索引(index或stage或cache)用於緩衝工作目錄資訊與下一次提交的版本資訊;不變的、僅追加的物件資料庫。  物件資料庫包含4類物件:  以上4類的物件用其內容的SHA-1 hash值標識:hash值的前兩個字元作為存放的目錄名字,其餘hash字元作為這個物件的檔名。  Git資料庫中不變引用的物件將會被垃圾回收清除。Git命令可以建立、移動、刪除引用。"git show-ref"列出所有引用。某些引用型別:  某些操作(例如,將提交推送到遠端儲存庫,儲存太多物件或手動執行Git的垃圾收集命令)可能會導致Git將物件重新打包為打包檔案,在打包過程中,採用反向差異並進行壓縮以消除多餘的內容並減小尺寸。該過程將生成包含物件內容的.pack檔案,每個檔案都有一個對應的.idx索引檔案,其中包含對打包物件及其在打包檔案中位置的引用。當將分支推送到遠端儲存庫或從遠端儲存庫拉出分支時,這些打包檔案將通過網路傳輸。提取或獲取分支時,將打包檔案解壓縮以在物件儲存庫中建立鬆散物件。

  在Windows平臺上有msysgit與TortoiseGit可資利用。TortoiseGit還提供有GUI。  現在git也提供windows版本下載。  Visual Studio 自 2013 版本開始內建 Git 功能。

  

  有不少的專案目前都使用git:

  以下是部分知名的支援git的原始碼存取服務:
git(,,吉特)是一個分散式版本控制軟體,最初由林納斯·託瓦茲創作,於2005年以GPL釋出。最初目的是為更好地管理Linux核心開發而設計。應注意的是,這與GNU Interactive Tools(一個類似介面的檔案管理器)不同。