使用Git的基本步驟

第一步、初次運行Git前的配置

    通常在新的系統上,咱們都須要先配置下本身的 Git 工做環境。配置工做只需一次,之後升級時還會沿用如今的配置。固然,若是須要,你隨時能夠用相同的命令修改已有的配置。
    Git 提供了一個叫作 git config 的工具,專門用來配置或讀取相應的工做環境變量。git

1.用戶信息

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

2.文本編輯器

文本編輯器通常默認是vi或vim,能夠經過如下命令配置成其餘編輯器github

$ git config --global core.editor emacs

3.差別分析工具

$ git config --global merge.tool vimdiff

4.查看配置信息

git config --list

5.獲取幫助

三種方法:vim

$ git help <verb>
$ git <verb> --help
$ man git-<verb>

第二步、取得項目的 Git 倉庫

1.從當前目錄初始化

要對現有的某個項目開始用 Git 管理,只需到此項目所在的目錄,執行:服務器

$ git init

初始化後,在當前目錄下會出現一個名爲 .git 的目錄,全部 Git 須要的數據和資源都存放在這個目錄中。編輯器

2.從現有倉庫克隆

克隆倉庫的命令格式爲 git clone [url]。好比,要克隆 Ruby 語言的 Git 代碼倉庫 Grit,能夠用下面的命令:工具

$ git clone git://github.com/schacon/grit.git          //項目目錄名稱:grit

或

$ git clone git://github.com/schacon/grit.git mygrit   //項目目錄名稱:mygrit

 

第三步、記錄每次更新到倉庫

1.檢查當前文件狀態

$ git status

2.跟蹤新文件

$ git add README

3.暫存已修改文件

如今咱們修改下以前已跟蹤過的文件 benchmarks.rb,而後再次運行 status 命令,會看到這樣的狀態報告:fetch

$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: README
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: benchmarks.rb
#

文件 benchmarks.rb 出如今 「Changed but not updated」 這行下面,說明已跟蹤文件的內容發生了變化,但尚未放到暫存區。要暫存此次更新,須要運行 git add 命令(這是個多功能命令,根據目標文件的狀態不一樣,此命令的效果也不一樣:能夠用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區,還能用於合併時把有衝突的文件標記爲已解決狀態等)。ui

運行 git add 將 benchmarks.rb 放到暫存區,下次提交時就會一併記錄到倉庫。url

4.忽略某些文件

建立一個名爲 .gitignore 的文件,列出要忽略的文件模式spa

文件 .gitignore 的格式規範以下:

  • 全部空行或者以註釋符號 # 開頭的行都會被 Git 忽略。
  • 可使用標準的 glob 模式匹配。
  • 匹配模式最後跟反斜槓( /)說明要忽略的是目錄。
  • 要忽略指定模式之外的文件或目錄,能夠在模式前加上驚歎號( !)取反。 

星號( *)匹配零個或多個任意字符; [abc] 匹配任何一個列在方括號中的字符(這個例子要麼匹配一個 a,要麼匹配一個 b,要麼匹配一個 c);問號( ?)只匹配一個任意字符;若是在方括號中使用短劃線分隔兩個字符,表示全部在這兩個字符範圍內的均可以匹配(好比 [0-9] 表示匹配全部 0 到 9 的數字)。 

一個 .gitignore 文件的例子:

# 此爲註釋 – 將被 Git 忽略
*.a # 忽略全部 .a 結尾的文件
!lib.a # 但 lib.a 除外
/TODO # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目錄下的全部文件
doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

5.查看已暫存和未暫存的更新

要查看還沒有暫存的文件更新了哪些部分,不加參數直接使用:

$ git diff

查看已經暫存起來的文件和上次提交時的快照之間的差別,能夠用:

$ git diff --cached

或

$ git diff --staged

6.提交更新

每次準備提交前,先用 git status 看下,是否是都已暫存起來了,而後再運行提交命令 git commit:

$ git commit

這種方式會啓動文本編輯器以便輸入本次提交的說明。退出編輯器時,Git 會丟掉註釋行,將說明內容和本次更新提交到倉庫。

也可使用 -m 參數後跟提交說明的方式,在一行命令中提交更新:

$ git commit -m "Story 182: Fix benchmarks for speed"

跳過使用暫存區域

儘管使用暫存區域的方式能夠精心準備要提交的細節,但有時候這麼作略顯繁瑣。Git 提供了一個跳過使用暫存區域的方式,只要在提交的時候,給 git commit 加上 -a 選項,Git 就會自動把全部已經跟蹤過的文件暫存起來一併提交,從而跳過 git add 步驟:

$ git commit -a -m 'added new benchmarks'

7.移除文件

要從 Git 中移除某個文件,就必需要從已跟蹤文件清單中移除(確切地說,是從暫存區域移除),而後提交。能夠用 git rm 命令完成此項工做,並連帶從工做目錄中刪除指定的文件,這樣之後就不會出如今未跟蹤文件清單中了。

$ git rm grit.gemspec

若是刪除以前修改過而且已經放到暫存區域的話,則必需要用強制刪除選項 -f(譯註:即 force 的首字母),以防誤刪除文件後丟失修改的內容。

另一種狀況是,咱們想把文件從 Git 倉庫中刪除(亦即從暫存區域移除),但仍然但願保留在當前工做目錄中。換句話說,僅是從跟蹤清單中刪除。好比一些大型日誌文件或者一堆 .a 編譯文件,不當心歸入倉庫後,要移除跟蹤但不刪除文件,以便稍後在 .gitignore 文件中補上,用 --cached 選項便可:

$ git rm --cached readme.txt

8.文件更名

$ git mv file_from file_to

例如:

$ git mv README.txt README
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
# 
# renamed: README.txt -> README
#

其實,運行 git mv 就至關於運行了下面三條命令:

$ mv README.txt README
$ git rm README.txt
$ git add README

9.查看提交歷史

$ git log

默認不用任何參數的話, git log 會按提交時間列出全部的更新,最近的更新排在最上面。

第四步、撤消操做

1.修改最後一次提交

有時候咱們提交完了才發現漏掉了幾個文件沒有加,或者提交信息寫錯了。想要撤消剛纔的提交操做,可使用 --amend 選項從新提交:

$ git commit --amend

啓動文本編輯器後,會看到上次提交時的說明,編輯它確認沒問題後保存退出,就會使用新的提交說明覆蓋剛纔失誤的提交。

2.取消已經暫存的文件

例:取消暫存 的benchmarks.rb 文件:

$ git reset HEAD benchmarks.rb

3.取消對文件的修改

若是以爲剛纔對 benchmarks.rb 的修改徹底沒有必要,能夠取消修改,回到以前的狀態(也就是修改以前的版本):

$ git checkout -- benchmarks.rb

 

第五步、推送到遠程倉庫

1.查看當前的遠程庫

$ git remote      //顯示遠程倉庫的名字

$ git remote -v   //顯示遠程倉庫的名字和對應的克隆地址

2.添加遠程倉庫

要添加一個新的遠程倉庫,能夠指定一個簡單的名字,以便未來引用,運行 git remote add [shortname] [url]:

$ git remote add pb git://github.com/paulboone/ticgit.git

3.從遠程倉庫抓取數據

能夠用下面的命令從遠程倉庫抓取數據到本地:

$ git fetch [remote-name]

4.推送數據到遠程倉庫

將本地倉庫中的數據推送到遠程倉庫。實現這個任務的命令很簡單: git push [remote-name] [branch-name]。若是要把本地的 master 分支推送到 origin 服務器上(再次說明下,克隆操做會自動使用默認的 master 和 origin 名字),能夠運行下面的命令:

$ git push origin master

5.查看遠程倉庫信息

能夠經過命令 git remote show [remote-name] 查看某個遠程倉庫的詳細信息:

$ git remote show origin

6.遠程倉庫的刪除和重命名

能夠用 git remote rename 命令修改某個遠程倉庫的簡短名稱,好比想把 pb 改爲 paul,能夠這麼運行:

$ git remote rename pb paul

注意,對遠程倉庫的重命名,也會使對應的分支名稱發生變化,原來的 pb/master 分支如今成了 paul/master。

碰到遠端倉庫服務器遷移,或者原來的克隆鏡像再也不使用,又或者某個參與者再也不貢獻代碼,那麼須要移除對應的遠端倉庫,能夠運行 git remote rm 命令:

$ git remote rm paul

 

第七步、打標籤

1.列顯已有的標籤

$ git tag

咱們能夠用特定的搜索模式列出符合條件的標籤。只對 1.4.2 系列的版本感興趣,能夠運行下面的命令:

$ git tag -l 'v1.4.2.*'

2.新建含附註的標籤

建立一個含附註類型的標籤很是簡單,用 -a (譯註:取 annotated 的首字母)指定標籤名字便可:

$ git tag -a v1.4 -m 'my version 1.4'

而 -m 選項則指定了對應的標籤說明,Git 會將此說明一同保存在標籤對象中。若是在此選項後沒有給出具體的說明內容,Git 會啓動文本編輯軟件供你輸入。

可使用 git show 命令查看相應標籤的版本信息,並連同顯示打標籤時的提交對象:

$ git show v1.4

3.輕量級標籤

輕量級標籤實際上就是一個保存着對應提交對象的校驗和信息的文件。要建立這樣的標籤,一個 -a, -s 或-m 選項都不用,直接給出標籤名字便可:

$ git tag v1.4-lw

4.後期加註標籤

你甚至能夠在後期對早先的某次提交加註標籤,只要在打標籤的時候跟上對應提交對象的校驗和(或前幾位字符)便可:

$ git tag -a v1.2 9fceb02

5.分享標籤

默認狀況下, git push 並不會把標籤傳送到遠端服務器上,只有經過顯式命令才能分享標籤到遠端倉庫。其命令格式如同推送分支,運行 git push origin [tagname] 便可:

$ git push origin v1.5

若是要一次推送全部(本地新增的)標籤上去,可使用 --tags 選項:

$ git push origin --tags
相關文章
相關標籤/搜索