工作目錄下的每一個檔案都不外乎這兩種狀态:已跟蹤或未跟蹤。
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