Git 安裝配置
Windows 平台上安裝
在 Windows 平台上安裝 Git 同樣輕松,有個叫做 msysGit 的項目提供了安裝包,可以到 GitHub 的頁面上下載 exe 安裝文件並運行:
安裝包下載地址:https://git-scm.com/download/win

安裝完后,就可以打開命令行控制台進行操作:
Git 配置
Git 提供了一個叫做 git config 的工具,專門用來配置或讀取相應的工作環境變量。
這些環境變量,決定了 Git 在各個環節的具體工作方式和行為。這些變量可以存放在以下三個不同的地方:
/etc/gitconfig文件:系統中對所有用戶都普遍適用的配置。若使用git config時用--system選項,讀寫的就是這個文件。~/.gitconfig文件:用戶目錄下的配置文件只適用於該用戶。若使用git config時用--global選項,讀寫的就是這個文件。- 當前項目的 Git 目錄中的配置文件(也就是工作目錄中的
.git/config文件):這里的配置僅僅針對當前項目有效。每一個級別的配置都會覆蓋上層的相同配置,所以.git/config里的配置會覆蓋/etc/gitconfig中的同名變量。
在 Windows 系統上,Git 會找尋用戶主目錄下的 .gitconfig 文件。主目錄即 $HOME 變量指定的目錄,一般都是 C:\Documents and Settings\$USER。
此外,Git 還會嘗試找尋 /etc/gitconfig 文件,只不過看當初 Git 裝在什么目錄,就以此作為根目錄來定位。
(1) 用戶名與Email:由於GIt是分布式版本控制系統,在本地上有一個版本庫,我們可以設置自己的用戶名與聯系方式:
代碼
ken@Linux:~/project$ git config --global user.email "rock@163.com"
ken@Linux:~/project$ git config --global --list
user.name=rock
user.email=rock@163.com
其中,--global指明user.name, user.email是全局變量。所謂全局變量,就是在你的PC上任何版本庫這些變量都是有效的。
user.name, user.email分別表示用戶名與郵箱。我們可以通過--list列舉出我們已經設置過的內容。需要說明的是,user.name,
user.email是必須設置的,以后才知道是誰修改了項目。實際上git可設置的選項超過130個,只是大部分我們是不常用的。
(2)Git輸出顏色:如果你想git反饋的信息中以不同顏色代表不同類型內容,那么可以設置顏色為"always"/'auto':
ken@Linux:~/project$ git config --global --list
user.name=ken
user.email=ken@gmail.com
color.ui=always
(3)git help:git有着非常豐富的用戶手冊,只要在命令行上敲入:
當然,前提是要安裝好git-doc。也可以在線瀏覽:http://www.kernel.org/pub/software/scm/git/docs/
創建版本庫
接下來我們可以開始學習如何用git來管理我們的項目了。
第一步,我們必須在本地創建一個版本庫,即:.git目錄。創建版本庫很簡單,用Git 提供的git init命令就可以創建了:
rock@Linux:~$ cd project/
rock@Linux:~/project$ git init
Initialized empty Git repository in /home/ken/project/.git/
上面的操作我們先創建了project目錄,你的項目文件都存放在這個目錄下。接着在目錄執行:git init。OK。很簡單,這時候會在/project/目錄下生成一個.git目錄,ls -a就可以看到。切換進去該目錄,會看到一些文件和目錄,主要用來存放版本庫的元數據。
3、添加和提交記錄
假設我們的項目只有一個C文件,這里用經典的hello world作為例子:

添加文件到庫

提交保存到庫

然后修改main.m文件內容

查看修改的文件:

可以看到main.m文件顯示紅色的modified為修改狀態。
兩次添加並提交保存

查看是否提交成功:
我們已經又提交了一次,為了查看是否提交成功,可以用git log -1。最后面是數字'1',不是字母'l'。數字1表示我要查看最近的一次提交,如果不加上這個參數,那么以往的提交就會全部打印出來了。而事實上,我們並不需要查看那么多的記錄。

4、分支
分支是維護項目中並行歷史記錄的方法。分支如何理解?我們打兩個比方來說明:
第一種情況:有兩個人A和B走在同一條大路上(主分支master)要去同一個目的地C,在這條大路上有一條小路可以繞過去到達目標C,但是沿途風景不一樣嘛。A還是直接走大路,而B選擇了小路,繞了一個彎最后跟A在C相遇了。A跟B這時候交流自從分別后各自沿途看到了什么,於是他們對對方的見聞都有了了解。
第二種情況:A走在一條大路,中途有一條小路,A不知道這條小路能不能成功通向某一個地方,於是A記錄了自己現在的位置,走小路一邊走一邊做記錄沿途的風景,最后得到了一個結果:可以通向(或者不可以)。這時候A如果覺得這次實驗他只是想知道結果,過程不重要,那么就扔掉剛才的記錄(刪除分支),如果他覺得有必要留下記錄,那就不扔了,暫且保留(不刪除分支)。
其實剛才說的兩種情況就是最常用到的兩種分支:用來支持不同版本的分支(第一個比喻)和特定功能開發的分支(第二個比喻)。接下里我們准備創建一個分支,看看分支有什么特點:
這條命令中,第三個參數是新的分支,第四個參數表示父分支,在這里我們的父分支是主分支master。所以這條命令就是在主分支master上創建一條新分支sub_1。我們可以用git branch命令來查看一共有多少個分支已經我們現在所在的分支:
* master
sub_1
前面的星號表示所在分支,所以我們現在有兩個分支,所在的分支是master。
這個時候我們想修改剛才的文件。隨便條件一個打印語句:printf("Hello, Git!\n");在打印"Hello, world!"的后面,然后提交:
代碼
[master 97661f6] add a print line after print hello world
1 files changed, 1 insertions(+), 0 deletions(-)
ken@Linux:~/project$ git log -1
注意到commit 前面有個-a參數,這個參數表示提交全部修改過的文件,連add指令也省了。
那么我們如何切換到新的分支上面去呢?很簡單,用checkout命令就OK了。
Switched to branch 'sub_1'
切換成功了,如果你現在執行git branch命令,星號應該是在sub_1前面了。這時候你再去看看你的helloworld.c,里面的內容跟剛才修改后的一樣嗎?
5、發布版本
假如我們要發布項目,定版本號為1.0,那么可以為這個版本打一個標簽:
rock@Linux:~/project$ git tag
1.0
上面第一條指令中,第三個參數是標簽,最后一個則是表示打標簽的點;接下來呢,我們要做的最后一件事是為發布的版本做打包成一個tar或者zip包。命令git archive可以實現這個功能:
> --prefix=helloworld-1.0/ 1.0 \
> | gzip > helloworld-1.0.tar.gz
rock@Linux:~/project$ ls
helloworld-1.0.tar.gz helloworld.c
上面的命令相對來說復雜了點。如果你的命令太長,可以用'\'來分行;format參數指定哪種格式輸出,也可以是zip;prefix表示發布的包前綴;1.0是指定要對哪個標簽打包;最后面就是壓縮了,用的是Unix的管道,假如不熟悉的話,baidu一下吧:)
