Git學習教程(一) git簡介

2022-08-31 06:06:08 字數 3166 閱讀 5670

**:

第一課. git簡介

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

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

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

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

版本控制系統 

首先,git是乙個版本控制系統,用來保留工程源**歷史狀態的命令列工具。類似於svn,cvs或者perforce等工具。

當你需要得到以前的乙個儲存點時,你可以利用它來追蹤專案中的檔案,並且得到某些時間點提交的專案狀態。你可以和合作夥伴共享這些歷史狀態,將他們的工作和你的工作進行合併,可以對整個工程或某些檔案跟歷史版本進行比較或者恢復到早期的某個版本。

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

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

開源

git是乙個開源專案,有很多年的歷史了,它的大部分內容都是用c來寫的。

離線,速度快

git是完全的分布式處理,這意味著它可以離線工作。跟vcs工具例如perforce或者svn完全不同,git的所有操作幾乎不需要網路連線,包括歷史回顧,差異顯示和提交。

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

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

real0m0.352s

user0m0.300s

sys0m0.034s 

$ time svn log > /dev/null

real0m3.709s

user0m0.482s

sys0m0.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"'

real0m0.273s

user0m0.032s

sys0m0.008s

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

real 0m45.276s

user0m15.997s

sys0m5.503s

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

time git push

real0m6.219s

user0m0.023s

sys0m0.011s

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

比svn更小

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只包含專案的最後乙個版本。

快照,而不是變更集

跟其他的vcs工具不同,git是基於快照的。不再是考慮將提交點儲存成補丁檔案,而是在你提交專案的時候對專案做乙個簡單的快照。

提交的東西包含一些元資料(提交資訊(message),作者,日期等等),乙個提交點指向這次提交時專案的快照。

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

如果要了解更深層次的git儲存資料的只是,可以訪問git for computer scientists

分支和合併

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

摒棄了cvs只對專案開發主線建立分枝的做法,git開發者可以隨時建立,合併,刪除多個分枝。通常對於實現某個功能或者每個debug階段,都可以建立它的分枝,當完成之後再將其進行合併。這種模式可以讓開發者體驗更加快速,簡便,安全的方式來開發專案。它鼓勵一種非線性的開發周期,它可以說是並行的多執行緒模式而不是多個步驟序列的模式。

安裝git

參見git community book中對於git安裝在不同作業系統中的說明。

資源關於git的更多資訊,可以參考git-scm.com

Git教程 簡介

cvs及svn都是集中式的版本控制系統,而git是分布式版本控制系統,集中式和分布式版本控制系統有什麼區別呢?集中式版本控制系統,版本庫是集中存放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給 伺服器。伺服器就好比是乙個圖...

Git教程 簡介

git 是乙個開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的專案。git 是 linus torvalds 為了幫助管理 linux 核心開發而開發的乙個開放原始碼的版本控制軟體。git 與常用的版本控制工具 cvs,subversion 等不同,它採用了分布式版本庫的方式,不必伺服器端...

Git學習(一)簡介

很多人都知道,linus在1991年建立了開源的linux,從此,linux系統不斷發展,已經成為最大的伺服器系統軟體了。linus雖然建立了linux,但linux的壯大是靠全世界熱心的志願者參與的,這麼多人在世界各地為linux編寫 那linux的 是如何管理的呢?事實是,在2002年以前,世界...