章節 ▾ 第二版

A3.3 附錄 C:Git 命令 - 基本快照

基本快照

對於暫存內容並將其提交到歷史記錄的基本工作流程,只有少數幾個基本命令。

git add

git add 命令將工作目錄中的內容新增到暫存區(或“索引”)中,以備下次提交。當執行 git commit 命令時,預設情況下它只檢視這個暫存區,因此 git add 用於精確地構建你希望下一次提交快照看起來的樣子。

這個命令在 Git 中極其重要,本書中提及或使用了數十次。我們將快速介紹一些可以找到的獨特用法。

我們首先在跟蹤新檔案中詳細介紹和解釋了 git add

我們提到如何在基本合併衝突中用它來解決合併衝突。

我們介紹瞭如何使用它來互動式地暫存修改檔案中特定部分,詳見互動式暫存

最後,我們在樹物件中模擬了它的底層操作,這樣你就能瞭解它在幕後做了什麼。

git status

git status 命令將顯示工作目錄和暫存區中檔案的不同狀態。哪些檔案已修改但未暫存,哪些檔案已暫存但尚未提交。在其常規形式下,它還會顯示一些關於如何在這些階段之間移動檔案的基本提示。

我們首先在檢查檔案的狀態中介紹了 status 命令,包括其基本形式和簡化形式。雖然我們在本書中多處使用它,但 git status 命令的所有功能幾乎都在那裡得到了介紹。

git diff

git diff 命令用於檢視任意兩個樹之間的差異。這可以是工作環境和暫存區之間的差異(單獨使用 git diff),暫存區和上次提交之間的差異(git diff --staged),或者兩個提交之間的差異(git diff master branchB)。

我們首先在檢視已暫存和未暫存的更改中介紹了 git diff 的基本用法,在那裡我們展示瞭如何檢視哪些更改已暫存,哪些尚未暫存。

我們在提交準則中檢查提交前可能存在的空白符問題,使用 --check 選項。

我們瞭解瞭如何透過 git diff A…​B 語法在確定引入了什麼中更有效地檢查分支之間的差異。

我們使用它透過 -b 過濾掉空白符差異,以及如何在高階合併中透過 --theirs--ours--base 比較衝突檔案的不同階段。

最後,我們在從子模組開始中透過 --submodule 有效地比較子模組更改。

git difftool

git difftool 命令只是啟動一個外部工具來顯示兩個樹之間的差異,以防你想使用內建 git diff 命令之外的其他工具。

我們只在檢視已暫存和未暫存的更改中簡要提及了這一點。

git commit

git commit 命令獲取所有已透過 git add 暫存的檔案內容,並在資料庫中記錄一個新的永久快照,然後將當前分支上的分支指標移動到該快照。

我們首先在提交你的更改中介紹了提交的基本知識。在那裡我們還演示瞭如何在日常工作流程中使用 -a 標誌跳過 git add 步驟,以及如何使用 -m 標誌在命令列上傳遞提交訊息而不是啟動編輯器。

撤銷操作中,我們介紹了使用 --amend 選項來重做最近一次提交。

分支概覽中,我們更詳細地探討了 git commit 的作用以及它為何以這種方式工作。

我們在簽署提交中瞭解瞭如何使用 -S 標誌以加密方式簽署提交。

最後,我們深入研究了 git commit 命令在後臺做了什麼以及它在提交物件中是如何實際實現的。

git reset

git reset 命令主要用於撤銷操作,正如其動詞所示。它會移動 HEAD 指標,並可選擇地更改 index 或暫存區,如果你使用 --hard,它還可以選擇性地更改工作目錄。最後一個選項可能導致此命令在錯誤使用時丟失你的工作,因此在使用前務必確保你理解它。

我們首先在取消暫存已暫存檔案中有效地介紹了 git reset 的最簡單用法,在那裡我們使用它來取消暫存我們已經執行過 git add 的檔案。

然後我們在重置的奧秘中詳細介紹了它,該章節完全致力於解釋此命令。

我們使用 git reset --hard中止合併中中止合併,在那裡我們也使用了 git merge --abort,它是 git reset 命令的一個簡單包裝。

git rm

git rm 命令用於從 Git 的暫存區和工作目錄中刪除檔案。它類似於 git add,因為它為下次提交暫存了一個檔案刪除操作。

我們在刪除檔案中詳細介紹了 git rm 命令,包括遞迴刪除檔案,以及只從暫存區刪除檔案但使用 --cached 將其留在工作目錄中的方法。

本書中 git rm 的唯一其他不同用法是在刪除物件中,我們在執行 git filter-branch 時簡要使用並解釋了 --ignore-unmatch 選項,這只是為了在嘗試刪除的檔案不存在時不會出錯。這對於指令碼編寫目的很有用。

git mv

git mv 命令是一個便捷的瘦命令,用於移動檔案,然後對新檔案執行 git add 並對舊檔案執行 git rm

我們只在移動檔案中簡要提及了此命令。

git clean

git clean 命令用於從工作目錄中刪除不需要的檔案。這可能包括刪除臨時構建產物或合併衝突檔案。

我們在清理工作目錄中介紹了許多使用 clean 命令的選項和場景。

scroll-to-top