歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Git使用教程與基本原理

Git使用教程與基本原理

日期:2017/2/28 14:47:56   编辑:Linux教程

說明:該教程全部圖片都來自於《Pro Git》 下載見 http://www.linuxidc.com/Linux/2013-05/85066.htm 。以下所有的操作,除非特別聲明,都是基於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上,你可以到http://msysgit.github.com/上下載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 [email protected]

當然你也可以不用--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協議來訪問服務器端,期間程序會自動進行密鑰對匹配,如果你設了訪問密碼,你可能需要輸入密碼。

更多關於ssh的內容,請訪問這裡:http://www.freebsd.org/doc/zh_CN/books/handbook/openssh.html

這些設定完之後,你可以通過獲得任何一個公開的代碼倉庫來檢測你的git是否工作正常。比如下面這個:

git clone git://git2.kernel.org/pub/scm/git/git.git

4、GIT倉庫

Git做為一個資源管理和跟蹤系統,如果想要把自己的文件托管在Git上,那麼首先你得讓Git知道你需要管理的文件在哪。比如說現在我有一個項目,它在test文件夾裡,我想讓Git管理這個項目,這個時候你需進入到這個目錄,然後運行“git init”命令。這個時候Git就會在該目錄下生成一個.git的隱藏目錄,Git用來進行版本控制和內容跟蹤的所有文件都在該文件夾下。

處於git跟蹤下的文件只具有三種狀態:

  • Modified(working directory):被修改過的文件
  • Staged(staging area):通過git add添加到暫存區域的文件
  • Committed(git directory):通過git commit提交到倉庫的文件

所以,一般的git工作流程可能是這樣:修改過某些文件,然後把這些文件添加都暫緩區,再提交到倉庫中形成一個版本或快照,最後提交到git服務器上。而在中間,可能伴隨著分支管理,分支切換,撤消與合並。

可能有些人會覺得很奇怪,為什麼git會有暫存區域這個概念,直接提交到倉庫中不就ok了。其實這是git為了做版本控制用的,試想如果沒有暫存區域,每修改一個文件,就會形成一個版本,太過頻繁,不易於管理。暫存區域其實就是下一個版本的文件清單,你可以自由控制該往倉庫中提交什麼文件,這也可以避免在一個版本中包含一些中間文件,比如編譯後的文件。

Copyright © Linux教程網 All Rights Reserved