天天看點

git基礎(3)--記錄每次更新到倉庫

工作目錄下的每一個檔案都不外乎這兩種狀态:已跟蹤或未跟蹤。

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