-
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 內建的 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 clean
git clean 命令用於從工作目錄中刪除不需要的檔案。這可能包括刪除臨時構建產物或合併衝突檔案。
我們在 清理您的工作目錄 中介紹了 clean 命令的許多選項以及可能使用它的場景。