Git教程

使用 git add 命令將想要快照的內容寫入緩存區, 而執行 git commit 將緩存區內容添加到倉庫中。

安裝

sudo apt-get install git

設置用戶信息

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

檢查配置信息

如果想要檢查你的配置,可以使用 git config –list 命令來列出所有 Git 當時能找到的配置。
文本編輯器

既然用戶信息已經設置完畢,你可以配置默認文本編輯器了,當 Git 需要你輸入信息時會調用它。 如果未配置,Git 會使用操作系統默認的文本編輯器,通常是 Vim。 如果你想使用不同的文本編輯器,例如 Emacs,可以這樣做:

$ git config –global core.editor emacs

2.獲取 Git 倉庫

有兩種取得 Git 項目倉庫的方法。 第一種是在現有項目或目錄下導入所有文件到 Git 中; 第二種是從一個服務器克隆一個現有的 Git 倉庫。
在現有目錄中初始化倉庫

如果你打算使用 Git 來對現有的項目進行管理,你只需要進入該項目目錄並輸入:

$ git init

克隆現有的倉庫
git clone [url]

[url] 爲你想要複製的項目,就可以了。

例如我們克隆 Github 上的項目:

$ git clone git@github.com:schacon/simplegit.git

2.2檢查當前文件狀態

要查看哪些文件處於什麼狀態,可以用 git status 命令。 如果在克隆倉庫後立即使用此命令,會看到類似這樣的輸出:
現在,讓我們在項目下創建一個新的 README 文件。 如果之前並不存在這個文件,使用 git status 命令,你將看到一個新的未跟蹤文件:
在狀態報告中可以看到新建的 README 文件出現在 Untracked files 下面。 未跟蹤的文件意味着 Git 在之前的快照(提交)中沒有這些文件;Git 不會自動將之納入跟蹤範圍,除非你明明白白地告訴它“我需要跟蹤該文件”, 這樣的處理讓你不必擔心將生成的二進制文件或其它不想被跟蹤的文件包含進來。 不過現在的例子中,我們確實想要跟蹤管理 README 這個文件。

2.3跟蹤新文件
使用命令 git add 開始跟蹤一個文件。 所以,要跟蹤 README 文件,運行:
git add README
git add 命令使用文件或目錄的路徑作爲參數;如果參數是目錄的路徑,該命令將遞歸地跟蹤該目錄下的所有文件。
此時再運行 git status 命令,會看到 README 文件已被跟蹤,並處於暫存狀態:
這裏寫圖片描述

狀態簡覽
git status 命令的輸出十分詳細,但有些繁瑣。 如果你使用 git status -s 命令或 git status –short 命令,你將得到一種更爲緊湊的格式輸出。 運行 git status -s

$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

新添加的未跟蹤文件前面有 ?? 標記,新添加到暫存區中的文件前面有 A 標記,修改過的文件前面有 M 標記。 注意到 M 有兩個可出現的位置,出現在右邊的 M 表示該文件被修改了但是還沒放入暫存區,出現在靠左邊的 M 表示該文件被修改了並放入了暫存區。
例如,上面的狀態報告顯示: README 文件在工作區被修改了但是還沒有將修改後的文件放入暫存區,lib/simplegit.rb 文件被修改了並將修改後的文件放入了暫存區。 而 Rakefile 在工作區被修改並提交到暫存區後又在工作區中被修改了,所以在暫存區和工作區都有該文件被修改了的記錄。

忽略文件
有些文件無需納入 Git 的管理,也不希望它們總出現在未跟蹤文件列表。 通常都是些自動生成的文件,比如日誌文件,或者編譯過程中創建的臨時文件等。 在這種情況下,創建一個名爲 .gitignore 的文件,列出要忽略的文件模式。 來看一個實際的例子:

$ cat .gitignore
*.[oa]
*~
第一行告訴 Git 忽略所有以 .o 或 .a 結尾的文件。一般這類對象文件和存檔文件都是編譯過程中出現的。 第二行告訴 Git 忽略所有以波浪符(~)結尾的文件,許多文本編輯軟件(比如 Emacs)都用這樣的文件名保存副本。 此外,你可能還需要忽略 log,tmp 或者 pid 目錄,以及自動生成的文檔等等。 要養成一開始就設置好 .gitignore 文件的習慣,以免將來誤提交這類無用的文件。

文件 .gitignore 的格式規範如下:
所有空行或者以 # 開頭的行都會被 Git 忽略。
可以使用標準的 glob 模式匹配。
匹配模式可以以(/)開頭防止遞歸。
匹配模式可以以(/)結尾指定目錄。
要忽略指定模式以外的文件或目錄,可以在模式前加上驚歎號(!)取反。

所謂的 glob 模式是指 shell 所使用的簡化了的正則表達式。 星號()匹配零個或多個任意字符;[abc] 匹配任何一個列在方括號中的字符(這個例子要麼匹配一個 a,要麼匹配一個 b,要麼匹配一個 c);問號(?)只匹配一個任意字符;如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符範圍內的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的數字)。 使用兩個星號() 表示匹配任意中間目錄,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。

git diff

執行 git diff 來查看執行 git status 的結果的詳細信息。

git diff 命令顯示已寫入緩存與已修改但尚未寫入緩存的改動的區別。git diff 有兩個主要的應用場景。

尚未緩存的改動:git diff
查看已緩存的改動: git diff --cached
查看已緩存的與未緩存的所有改動:git diff HEAD
顯示摘要而非整個 diff:git diff --stat

git commit

使用 git add 命令將想要快照的內容寫入緩存區, 而執行 git commit 將緩存區內容添加到倉庫中。

外,你也可以在 commit 命令後添加 -m 選項,在命令行裏提供註釋,將提交信息與命令放在同一行,如下所示:

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

跳過使用暫存區域

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

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

移除文件
git rm
git rm 會將條目從緩存區中移除
默認情況下,git rm file 會將文件從緩存區和你的硬盤中(工作目錄)刪除。
如果你想要在工作目錄中留着該文件,可以使用 git rm –cached:

如我們刪除 hello.php文件:

$ git rm hello.php 
rm 'hello.php'
$ ls
README

不從工作區中刪除文件:

$ git rm --cached README 
rm 'README'
$ ls
README

git mv
重命名磁盤上的文件

$ git mv README  README.md
$ ls
README.md
發佈了104 篇原創文章 · 獲贊 84 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章