Git 是一個開源的分布式版本控制系統,用于敏捷高效地處理任何或小或大的項目。
Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。
Git 與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫的方式,不必服務器端軟件支持。
Git官方網址是:https://git-scm.com/ ,打開后如下圖所示:
本教程將介紹如何在分布式環境中使用 Git 進行項目版本控制,同時在基于Web和非基于Web的應用程序開發中工作。
本教程是為那些希望學習 Git 版本控制系統技能的程序員和專業人士而設計和編寫的。本教程還可以作為從零開始學習 Git 版本控制系統的入門教程。本教程將一步一步地演示和幫助初學者學習 Git 版本控制系統的基本功能。在完成本教程學習之后,您會發現自己在使用 Git 版本控制系統方面具有一定的專業知識,并能熟悉操作和使用 Git 工具。
我們假設您將使用 Git 版本控制系統來處理各種Java或其它軟件開發的項目。因此,如果您的軟件開發生命周期可在一定程度曝光,或開發基于Web和非基于Web的應用程序的工作文檔,這將有利于學習和理解使用 Git 版本控制系統 。
Workspace:工作區
Index/Stage:暫存區,也叫索引
Repository:倉庫區(或本地倉庫),也存儲庫
Remote:遠程倉庫
1. 有關幾個名詞解釋
工作區: 通過git init創建的代碼庫的所有文件但是不包括.git文件(版本庫)
暫存區: 通過git add ./*/*Xxx/Xxxx* 添加的修改,都是進入到暫存區了,肉眼不可見 通過 git status 可以看到修改的狀態。
2. 什么是修改?
比如你新增了一行,這就是一個修改,刪除了一行,也是一個修改,更改了某些字符,也是一個修改,刪了一些又加了一些,也是一個修改,甚至創建一個新文件,也算一個修改。
分布式相比于集中式的最大區別在于開發者可以提交到本地,每個開發者通過克?。╣it clone),在本地機器上拷貝一個完整的Git倉庫。
下圖是經典的git開發過程。
從一般開發者的角度來看,git有以下功能:
⒈從服務器上克隆完整的Git倉庫(包括代碼和版本信息)到單機上。
⒉在自己的機器上根據不同的開發目的,創建分支,修改代碼。
⒊在單機上自己創建的分支上提交代碼。
⒋在單機上合并分支。
⒌把服務器上最新版的代碼fetch下來,然后跟自己的主分支合并。
⒍生成補?。╬atch),把補丁發送給主開發者。
⒎看主開發者的反饋,如果主開發者發現兩個一般開發者之間有沖突(他們之間可以合作解決的沖突),就會要求他們先解決沖突,然后再由其中一個人提交。如果主開發者可以自己解決,或者沒有沖突,就通過。
⒏一般開發者之間解決沖突的方法,開發者之間可以使用pull 命令解決沖突,解決完沖突之后再向主開發者提交補丁。
從主開發者的角度(假設主開發者不用開發代碼)看,git有以下功能:
⒈查看郵件或者通過其它方式查看一般開發者的提交狀態。
⒉打上補丁,解決沖突(可以自己解決,也可以要求開發者之間解決以后再重新提交,如果是開源項目,還要決定哪些補丁有用,哪些不用)。
⒊向公共服務器提交結果,然后通知所有開發人員。
⒈適合分布式開發,強調個體。
⒉公共服務器壓力和數據量都不會太大。
⒊速度快、靈活。
⒋任意兩個開發者之間可以很容易的解決沖突。
⒌離線工作。
● Git缺點
⒈資料少(起碼中文資料很少)。
⒉學習周期相對而言比較長。
⒊不符合常規思維。
⒋代碼保密性差,一旦開發者把整個庫克隆下來就可以完全公開所有代碼和版本信息。
Git --- The stupid content tracker, 傻瓜內容跟蹤器。Linus Torvalds 是這樣給我們介紹 Git 的。
Git 是用于 Linux內核開發的版本控制工具。與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫的方式,不必服務器端軟件支持(wingeddevil注:這得分是用什么樣的服務端,使用http協議或者git協議等不太一樣。并且在push和pull的時候和服務器端還是有交互的。),使源代碼的發布和交流極其方便。 Git 的速度很快,這對于諸如 Linux kernel 這樣的大項目來說自然很重要。 Git 最為出色的是它的合并跟蹤(merge tracing)能力。
實際上內核開發團隊決定開始開發和使用 Git 來作為內核開發的版本控制系統的時候,世界開源社群的反對聲音不少,最大的理由是 Git 太艱澀難懂,從 Git 的內部工作機制來說,的確是這樣。但是隨著開發的深入,Git 的正常使用都由一些友好的腳本命令來執行,使 Git 變得非常好用,即使是用來管理我們自己的開發項目,Git 都是一個友好,有力的工具?,F在,越來越多的著名項目采用 Git 來管理項目開發.
作為開源自由原教旨主義項目,Git 沒有對版本庫的瀏覽和修改做任何的權限限制。
目前GIT已經可以在windows下使用,主要方法有二:msysgit和Cygwin。Cygwin和Linux使用方法類似,Windows版本的GIT提供了友好的GUI(圖形界面),安裝后很快可以上手,不在此做大篇幅介紹。
本文將以 Git 官方文檔 Tutorial, core-tutorial 和 Everyday GIT 作為藍本翻譯整理,但是暫時去掉了對 Git 內部工作機制的闡述,力求簡明扼要,并加入了作者使用 Git 的過程中的一些心得體會,注意事項,以及更多的例子。建議你最好通過你所使用的 Unix / Linux 發行版的安裝包來安裝 Git, 你可以在線瀏覽本文 ,也可以通過下面的命令來得到本文最新的版本庫,并且通過后面的學習用 Git 作為工具參加到本文的創作中來。
(Snake.Zero 注:以下假設環境為Unix/Linux,本次修正主要是版本問題,git-add git-init-db等命令都改為了類似git add形式的,以免誤導新手。)
版本
版 | 原始發行日期 | 最新版本 | 發布日期 |
---|---|---|---|
0.99 | 2005/7/11 | 0.99.9n | 2005/12/15 |
1.0 | 2005/12/21 | 1.0.13 | 2006/1/27 |
1.1 | 2006/1/8 | 1.1.6 | 2006/1/30 |
1.2 | 2006/2/12 | 1.2.6 | 2006/4/8 |
1.3 | 2006/4/18 | 1.3.3 | 2006/5/16 |
1.4 | 2006/6/10 | 1.4.4.5 | 2008/7/16 |
1.5 | 2007/2/14 | 1.5.6.6 | 2008/12/17 |
1.6 | 2008/8/17 | 1.6.6.3 | 2010/12/15 |
1.7 | 2010/2/13 | 1.7.12.4 | 2012/10/17 |
1.8 | 2012年10月21日 | 1.8.5.6 | 2014年12月17日 |
1.9 | 2014年2月14日 | 1.9.5 | 2014年12月17日 |
2 | 2014年5月28日 | 2.0.5 | 2014年12月17日 |
2.1 | 2014年8月16日 | 2.1.4 | 2014年12月17日 |
2.2 | 2014年11月26日 | 2.2.3 | 2015年9月4日 |
2.3 | 2015年2月5日 | 2.3.10 | 2015年9月29日 |
2.4 | 2015年4月30日 | 2.4.11 | 2016年3月17日 |
2.5 | 2015年7月27日 | 2.5.5 | 2016年3月17日 |
2.6 | 2015年9月28日 | 2.6.6 | 2016年3月17日 |
2.7 | 2015年10月4日 | 2.7.4 | 2016年3月17日 |
2.8 | 2016年3月28日 | 2.8.4 | 2016年6月6日 |
2.9 | 2016年6月13日 | 2.9.3 | 2016年8月12日 |
2.1 | 2016年9月2日 | 2.1 | 2016年9月2日 |
2.13.3 | 2017年7月12日 | 2.13.3 | 2017年7月12日 |