-
1. 開始
-
2. Git 基礎
-
3. Git 分支
-
4. 伺服器上的 Git
- 4.1 協定
- 4.2 在伺服器上取得 Git
- 4.3 產生你的 SSH 公開金鑰
- 4.4 設定伺服器
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方託管選項
- 4.10 總結
-
5. 分散式 Git
-
A1. 附錄 A:其他環境中的 Git
- A1.1 圖形介面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 總結
-
A2. 附錄 B:在你的應用程式中嵌入 Git
-
A3. 附錄 C: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 clean
git clean
指令用於從您的工作目錄中移除不需要的檔案。這可能包括移除暫時性的建置成品或合併衝突檔案。
我們在清理您的工作目錄中介紹您可能會使用 clean 指令的許多選項和情況。