Git學習教程(一) :簡介

jopen 12年前發布 | 29K 次閱讀 Git 版本控制系統

第一課. git簡介
</div>

內容:什么是git,為什么要使用git以及獲取和學習git的途徑。

歡迎來到github學習教程的第一課。本教程將通過一系列的實例來介紹如快速,輕松地使用Git。教程中會有很多屏幕截圖,希望這樣可以讓你更好的學習和理解。

本節簡要介紹git的概念和為什么應該使用它


 

git是一個快速,開源,分布式的版本控制系統。因此,它在(開源)和(協作編程社區)很快取代了svn。


版本控制系統 
</div> </div>

首先,git是一個版本控制系統,用來保留工程源代碼歷史狀態的命令行工具。類似于SVN,CVS或者Perforce等工具。


當你需要得到以前的一個保存點時,你可以利用它來追蹤項目中的文件,并且得到某些時間點提交的項目狀態。你可以和合作伙伴共享這些歷史狀態,將他們的工作和你的工作進行合并,可以對整個工程或某些文件跟歷史版本進行比較或者恢復到早期的某個版本。


因為git根本上說是一個命令行工具,所以本教程中的大部分示例都會用命令行的方式給出。教程中使用現行git版本(1.6系列)編寫示例。如果使用早期版本的話,我們也建議您升級到1.6系列。當然,現在已經有很多git UI的工具,使得git變得更加簡單易用。


git的安裝:

下載地址 http://www.kernel.org/pub/software/scm/git/ 

安裝過程:

1.$ tar xzvf git-1.6.5

2.$ cd git-1.6.5

3.$ ./config --prefix=/usr/local

4.$ make

5.$ sudo make install

6.$ git --version


如果需要命令幫助的話,可以鍵入'-help'就會顯示出 操作手冊。你也可以鍵入'git help command'實現同樣的目的。


$ git log --help

$ git help log
</div> </div> </div> </div>
</div>

開源 
</div> </div>

git是一個開源項目,有很多年的歷史了,它的大部分內容都是用C來寫的。

Git學習教程(一)

你可以得到整個項目的源代碼,加以分析和改進。下載源程序的地址:git-scm.com/download。git許可證:GNU通用公共許可證(GNU General Public License)

離線,速度快
</div>    git是完全的分布式處理,這意味著它可以離線工作。跟VCS工具例如Perforce或者SVN完全不同,Git的所有操作幾乎不需要網絡連接,包括歷史回顧,差異顯示和提交。 </div>


這也意味著Git比其他的VCS工具要快很多,因為某些VCS工具對網絡的依賴會導致時間上的延遲。下面來看看'log'命令分別運行在git和SVN上的結果:


[master]$ time git log > /dev/null


real 0m0.352s

user 0m0.300s

sys 0m0.034s 


$ time svn log > /dev/null


real 0m3.709s

user 0m0.482s

sys 0m0.168s


git僅用了0.3秒而SVN用了3.7秒。你會發現幾乎所有的命令都有這樣的時間差異。例如,添加知名的famfamfam出品的圖標集并提 交,因為使用git可以將【提交(commit)】和【上傳('push')網絡】這兩個步驟分開,其中【提交(commit)】git只用1/4秒,而 SVN會用到45秒。

time 'git add icons; git commit -m "added icons"'


real 0m0.273s

user 0m0.032s

sys 0m0.008s


time 'svn add icons; svn commit -m "added icons"'


real 0m45.276s

user 0m15.997s

sys 0m5.503s


即使是再加上用git 提交(commit)之后再上傳(push)到網絡共享倉庫中的時間,也比SVN的耗時要少的多的多。

time git push


real 0m6.219s

user 0m0.023s

sys 0m0.011s


如果你僅僅是想提交然后繼續工作,你就會感覺到時間上的巨大差異--因為git的工作流程跟以前的版本控制系統不大一樣。git的命令大部分都是即時的,不像以前,執行'svn commit'命令之后,可以喝杯咖啡再回來繼續工作。


比svn更小
</div> </div>

git比較節省空間。舉例來說,一個Django項目如果使用現行的源代碼控制系統(source control systems)來實現版本控制的話,git克隆(clone)是最小的。

$ du -d 1 -h

108M ./django-bzr

 44M ./django-git

 53M ./django-hg

 53M ./django-svn


更神奇的是,雖然git克隆比SVN要小很多,但是git克隆包含整個項目的歷史版本---從第一次提交之后的每一個文件的每一次提交的版本都囊括了。然而,SVN只包含項目的最后一個版本。


快照,而不是變更集
</div> </div>


跟其他的VCS工具不同,git是基于快照的。不再是考慮將提交點存儲成補丁文件,而是在你提交項目的時候對項目做一個簡單的快照。


提交的東西包含一些元數據(提交信息(message),作者,日期等等),一個提交點指向這次提交時項目的快照。

Git學習教程(一)


記住這個圖對于給定情形下使用Git是非常有幫助的。

如果要了解更深層次的Git存儲數據的只是,可以訪問 Git for computer scientists

分支和合并
也許git最顯著的一個特點就是它的分枝模型了,因為它改變了開發者工作的基本模式。以前的VCS工具分枝的方法是對每一個分枝都放到一個獨立的目錄中。 而git可以讓你在同一個工作目錄中切換(switch)到不同的分枝。創建和切換分枝幾乎是即時的(instant),而且并不是所有的分枝都需要上傳 到git倉庫中去共享,對于某些你更愿意隱藏在本地的工作來說,git無疑提供了很大的便利。從這點上來說,git確是有其獨到之處。 </div>

摒棄了CVS只對項目開發主線創建分枝的做法,git開發者可以隨時創建,合并,刪除多個分枝。通常對于實現某個功能或者每個debug階段, 都可以創建它的分枝,當完成之后再將其進行合并。這種模式可以讓開發者體驗更加快速,簡便,安全的方式來開發項目。它鼓勵一種非線性的開發周期,它可以說 是并行的多線程模式而不是多個步驟串行的模式。
安裝git
參見 git community book中對于git安裝在不同操作系統中的說明。


文章轉自 http://fsjoy.blog.51cto.com/318484/244397

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!