git版本控制 for window安裝和命令行使用


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.name "rock"
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 color.ui "always"
ken@Linux:~/project$ git config --global --list
user.name=ken
user.email=ken@gmail.com
color.ui=always

  (3)git help:git有着非常豐富的用戶手冊,只要在命令行上敲入:

git help <comand>

  當然,前提是要安裝好git-doc。也可以在線瀏覽:http://www.kernel.org/pub/software/scm/git/docs/

創建版本庫

  接下來我們可以開始學習如何用git來管理我們的項目了。

  第一步,我們必須在本地創建一個版本庫,即:.git目錄。創建版本庫很簡單,用Git 提供的git init命令就可以創建了:

rock@Linux:~$ mkdir project
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如果覺得這次實驗他只是想知道結果,過程不重要,那么就扔掉剛才的記錄(刪除分支),如果他覺得有必要留下記錄,那就不扔了,暫且保留(不刪除分支)。

  其實剛才說的兩種情況就是最常用到的兩種分支:用來支持不同版本的分支(第一個比喻)和特定功能開發的分支(第二個比喻)。接下里我們准備創建一個分支,看看分支有什么特點:

rock@Linux:~/project$ git branch sub_1 master

  這條命令中,第三個參數是新的分支,第四個參數表示父分支,在這里我們的父分支是主分支master。所以這條命令就是在主分支master上創建一條新分支sub_1。我們可以用git branch命令來查看一共有多少個分支已經我們現在所在的分支:

rock@Linux:~/project$ git branch
* master
sub_1

  前面的星號表示所在分支,所以我們現在有兩個分支,所在的分支是master。

 

  這個時候我們想修改剛才的文件。隨便條件一個打印語句:printf("Hello, Git!\n");在打印"Hello, world!"的后面,然后提交:

代碼
rock@Linux:~/project$ git commit -a -m "add a print line after print 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了。

rock@Linux:~/project$ git checkout sub_1
Switched to branch 'sub_1'

  切換成功了,如果你現在執行git branch命令,星號應該是在sub_1前面了。這時候你再去看看你的helloworld.c,里面的內容跟剛才修改后的一樣嗎?

 

 

5、發布版本

  假如我們要發布項目,定版本號為1.0,那么可以為這個版本打一個標簽:

rock@Linux:~/project$ git tag 1.0 sub_1
rock@Linux:~/project$ git tag
1.0

  上面第一條指令中,第三個參數是標簽,最后一個則是表示打標簽的點;接下來呢,我們要做的最后一件事是為發布的版本做打包成一個tar或者zip包。命令git archive可以實現這個功能:

 

rock@Linux:~/project$ git archive --format=tar \
> --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一下吧:)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM