Git
章節 ▾ 第二版

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 的檔案。

然後,我們在揭開 Reset 神秘面紗中詳細介紹它,該章完全致力於解釋此指令。

我們在中止合併中使用 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