說明:該教程全部圖片都來自於《Pro Git》 下載見 。以下所有的操作,除非特別聲明,都是基於Linux終端來進行的。如果你發現這篇文章有錯誤,或者其他問題,歡迎與我聯絡:wengpingbo#gmail.com
1、什麼是GIT
Git是一個強調速度的分布式版本控制軟體和原始程式碼控制系統(SCM,source code management)。Git最初是由Linus Torvalds為核心開發而設計的管理軟體。自從Git推出以來,已經被很多開源項目所採納。每一個Git工作目錄是一個帶有完全記錄和版本資訊的倉庫,不依賴於網路和中央伺服器。Git是一個免費的開源軟體,遵從GNU v2協議。
Git這個詞在英語中的原意是很笨拙,沒用的人。Linus自嘲說:“我是一個任性的笨蛋,所以我把我的所有的項目的名字都和我很相似。第一個是Linux,現在是Git。”Git的協助文檔中描述Git為:笨拙的內容跟蹤者(the stupid content tracker)。(翻譯自WIKI)
關於開發Git的一些曆史由來,可以看看這個網站:https://lkml.org/lkml/2005/4/6/121
2、為什麼要用GIT
- 更順暢的工作流程,開發過程中,完全可以離線操作
- 快速,Git分布式架構使得本地倉庫包含所有的曆史版本資訊,你可以在不同的版本之間快速切換
- 彈性的本地分支,在svn下,你建一個分支需要把原始碼複製到另外一個檔案夾,而在Git下,建立分支的代價是非常小的,只需一條命令
- 倉庫目錄結構簡潔,用Git複製一個項目,只會在項目根目錄建立一個.git的目錄,而其他目錄很乾淨
- 內容按中繼資料方式儲存,所有的版本資訊都位於.git目錄下
- 完整性好,更易於協作開發
- 使用者群大,現在已經有成千上萬個開源項目採用Git來做專案管理,github上更是有無數個代碼倉庫
3、GIT安裝與配置
a) 安裝
1.從源碼安裝
在安裝之前,你必須保證以下幾個依賴包已經安裝在你的系統上:curl, zlib, openssl, expat, libiconv。如果你的系統是Ubuntu,你可以這樣安裝:
apt-get install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
當所有的依賴項已經解決,就可以從http://git-scm.com/download上下載Git的源碼,然後編譯安裝,具體命令如下:
tar -zxf git-1.*.*.*.tar.gz
cd git-1.*.*
make prefix=/usr/local all
sudo make prefix=/usr/local install
2.在Linux上安裝
如果你的系統是Linux或者Fedora,你可以通過以下命令直接安裝Git:
yum install git-core (fedora)
apt-get install git-core (ubuntu)
3.在Windows上安裝
儘管Git是發源於Linux,但現在Windows上也有能夠正常使用Git,只不過不支援中文,在Windows下所有的中文都顯示問號,另外還有一些功能上的BUG。所以建議還是在Linux上去使用Git,如果你不得不工作在Windows上,你可以到上下載msysgit的最新版,安裝過程和其他Windows程式差不多,基本上點下一步就OK了。Msysgit預設會安裝git bash和git GUI這兩個程式,一般用git bash就可以了,它支援常用的命令。如果對Linux命令列不熟,你也可以用用git GUI,但功能有限制。
b) 第一次使用GIT
在你安裝好Git之後,你需要修改一些配置,才能正常使用Git。
Git通過“git config”命令來配置Git,這個命令有2個選項:--system, --global, 加上預設選項,分別對應Git上3級設定檔。第一個是/etc/gitconfig檔案,和--system對應,這是全域設定檔,修改這個檔案,將會影響系統上所有的使用者,所有的倉庫。第二個是你家目錄下的/.gitconfig檔案,與--global對應,修改它會對你目前使用者的所有倉庫產生影響。第三個是你倉庫中的.git/.gitconfig檔案,這是“git config”預設修改的設定檔,它只會對你當前倉庫產生影響。
在第一次使用Git時,你需要告訴你的協同開發人員,你是誰以及你的郵箱,在你提交的時候,Git需要這兩個資訊。具體通過以下命令設定:
git config --global user.name “Test OSS”
git config --global user.email oss.lzu.edu.cn@gmail.com
當然你也可以不用--global選項,但這意味這你在每一個倉庫中都要這樣設定。
同時,你也可以指定你的編輯器,你的Diff工具:
git config --global core.editor vim
git config --global merge.tool vimdiff
你還可以通過”git config --list”命令來查看你的設定。
當你把Git設定好之後,如果你要和從Git伺服器上獲得倉庫,或者向Git伺服器提交你的代碼(比如github),你可能需要產生你自己的ssh金鑰組。Git支援4種與伺服器端通訊的協議:git、http、ssh和https。其中git只是一個唯讀協議,也就是說你只可以從伺服器端擷取倉庫,但是你不能提交你自己的代碼。而http和https用的很少,大部分都只支援ssh協議和Git協議。
當你通過ssh協議與遠端伺服器進行通訊的時候,你可以通過以下命令產生ssh金鑰組:
ssh-keygen -t rsa
如果你沒有指定密鑰名稱和存放路徑的話,它預設把兩個不對稱金鑰放在你的家目錄下的.ssh目錄下,密鑰檔案預設名稱為id_rsa和id_rsa.pub,前者是私密金鑰,後者是公開金鑰。中間可能會要你設定存取金鑰密碼,這個可以設,可以不設,但為了安全考慮,還是建議你設一個訪問密碼。否則,意味著任何持有你密鑰的人都可以使用該密鑰。
然後把你的公開金鑰發給Git倉庫管理員,然後你就可以通過ssh協議來訪問伺服器端,期間程式會自動進行金鑰組匹配,如果你設了訪問密碼,你可能需要輸入密碼。