工作目錄下的每一個文件都不外乎這兩種狀態:已跟蹤或未跟蹤。
1)已跟蹤或未跟蹤。 已跟蹤的文件是指那些被納入了版本控制的文件,在上一次快照中有它們的記錄,在工作一段時間後,它們的狀態可能處於未修改,已修改或已放入暫存區。
2)工作目錄中除已跟蹤文件以外的所有其它文件都屬於未跟蹤文件,它們既不存在於上次快照的記錄中,也沒有放入暫存區。
1、檢查當前文件狀態
查看哪些文件處於什麼狀態
git status
該命令還顯示了當前所在分支,並告訴你這個分支同遠程服務器上對應的分支沒有偏離。
2、跟蹤新文件
使用命令 git add 開始跟蹤一個文件。
git add test.txt
// 1、新建test.txt時,文件處於未跟蹤狀態
// 2、執行add後文件變爲已經暫存狀態
// 以上各階段可以通過git status去獲取
git add 命令使用文件或目錄的路徑作爲參數;如果參數是目錄的路徑,該命令將遞歸地跟蹤該目錄下的所有文件。
3、暫存已修改文件
已跟蹤文件的內容發生了變化,但還沒有放到暫存區。 要暫存這次更新,需要運行 git add 命令。
注:同一個文件修改一次執行git add後會進入暫存區,然後再修改,執行git status後,會同時在暫存區和未暫存區,此時如果執行git commit只提交第一次git add後的版本,工作目錄中的修改不會提交。
4、狀態簡覽
得到一種更爲緊湊的格式輸出
git status -s
git status --short
1)新添加的未跟蹤文件前面有 ?? 標記
2)新添加到暫存區中的文件前面有 A 標記
3)修改過的文件前面有 M 標記
4)M 有兩個可以出現的位置,出現在右邊的 M 表示該文件被修改了但是還沒放入暫存區,出現在靠左邊的 M 表示該文件被修改了並放入了暫存區。
5、忽略文件
我們總會有些文件無需納入 Git 的管理,也不希望它們總出現在未跟蹤文件列表。在這種情況下,我們可以創建一個名爲 .gitignore 的文件,列出要忽略的文件模式。
文件 .gitignore 的格式規範如下:
- 所有空行或者以 # 開頭的行都會被 Git 忽略。
- 可以使用標準的 glob 模式匹配。
- 匹配模式可以以(/)開頭防止遞歸。
- 匹配模式可以以(/)結尾指定目錄。
- 要忽略指定模式以外的文件或目錄,可以在模式前加上驚歎號(!)取反。
glob 模式是指 shell 所使用的簡化了的正則表達式
- 星號(*)匹配零個或多個任意字符
- [abc]匹配任何一個列在方括號中的字符
- 問號(?)只匹配一個任意字符、
- 如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符範圍內的都可以匹配
- 使用兩個星號(*) 表示匹配任意中間目錄
6、查看已暫存和未暫存的修改
1)要查看尚未暫存的文件更新了哪些部分,不加參數直接輸入 git diff
git diff
此命令比較的是工作目錄中當前文件和暫存區域快照之間的差異, 也就是修改之後還沒有暫存起來的變化內容。
2)查看已暫存的將要添加到下次提交裏的內容,可以用 git diff --cached 命令(1.6.1 及更高版本還允許使用 git diff --staged,效果是相同的,但更好記些)
git diff --staged
git diff 本身只顯示尚未暫存的改動,而不是自上次提交以來所做的所有改動。
7、提交更新
git commit
commit 命令後添加 -m 選項,將提交信息與命令放在同一行
git commit -m "project init"
1)提交後它會告訴你,當前是在哪個分支提交
2)本次提交的完整 SHA-1 校驗和是什麼
3)本次提交中,有多少文件修訂過,多少行添加和刪改過
8、跳過使用暫存區域
git commit 加上 -a 選項,Git 就會自動把所有已經跟蹤過的文件暫存起來一併提交,從而跳過 git add 步驟
git commit -a -m '追加新的修改信息'
9、移除文件
1)從 Git 中移除某個文件,就必須要從已跟蹤文件清單中移除(確切地說,是從暫存區域移除),然後提交。
可以用 git rm 命令完成此項工作,並連帶從工作目錄中刪除指定的文件,這樣以後就不會出現在未跟蹤文件清單中了。
rm test.txt
git rm test.txt
// 執行以上兩步,下一次提交時,該文件就不再納入版本管理了。
如果刪除之前修改過並且已經放到暫存區域的話,則必須要用強制刪除選項 -f
2)我們想把文件從 Git 倉庫中刪除(亦即從暫存區域移除),但仍然希望保留在當前工作目錄中(不想讓 Git 繼續跟蹤)。
git rm --cached README
git rm 命令後面可以列出文件或者目錄的名字,也可以使用 glob 模式。
10、移動文件
git mv file_from file_to
運行 git mv 就相當於運行了下面三條命令:
mv README.md README
git rm README.md
git add README