Page cover image

額外功能

Note


Note(註釋)允許您附加額外訊息或註釋附加到 Git 物件(Commit, Tag, 或 Tree),用於提供解釋和參考。

  1. 新增 Note。

SHELL
git notes add <Git SHA-1 ID>
git notes add -m '<Note 註解>' <Git SHA-1 ID>

git notes add: 使用預設編輯器編輯 Note

git notes add -m: 直接編輯 Note

選擇 Commit
新增 Note
  1. 查看 Note。

SHELL
git notes show <Git SHA-1 ID>
SHELL
git log --show-notes
notes show
--show-notes

Tag


Tag (標籤)用於標記 Git Commit 歷史中重要的里程碑。例如:對外發布、版本變更或重要 Commit。

  1. 新增 Note。

SHELL
git tag <Tag 名稱> 
git tag <Tag 名稱> <Git SHA-1 ID>
選擇 Commit
新增 Tag
  1. 查看 Tag。

SHELL
git log --oneline
  1. 新增含註解的 Tag。 (例如: 標籤製作者、電子郵件、日期、註解...)

SHELL
git tag -a <Tag 名稱> -m "<Tag 註解>"
git tag -a <Tag 名稱> <Git SHA-1 ID> -m "<Tag 註解>"
新增 Tag
查看 Tag
  1. 修改 Tag 指向。 (當設置錯誤的 Commit 時)

SHELL
git tag -f <Tag 名稱> <Git SHA-1 ID>
修改 Tag
查看 Tag
  1. 查看指定 Tag Commit。

SHELL
git show <Tag 名稱>
  1. 刪除Tag。

SHELL
git tag -d <Tag 名稱>

  1. 您使用將更改 Push 到 Remote repository 時,不會自動推送 Tag。您需要明確指定選項--tags

SHELL
git push --tags

Alias


Alias(別名) 功能允許您為常用的 Git 命令建立自定義的縮寫,從而幫助您節時間。

無需鍵入整個命令,您只需使用別名即可獲得相同的結果。可讓您的 Git 體驗更高效並根據您的特定需求量身定制。

  1. 建立別名。 (同一命令可以建立多筆 Alias)

SHELL
git config --global alias.<別名> <git 指令>
git config --global alias.st status
git config --global alias.bc checkout -b
git config --global alias.cb checkout -b
git config --global alias.cam 'commit -a -m'
git config --global alias.nx 'log --name-only --oneline'

同一命令可以建立多筆 Alias。多個參數必須使用: " " or ' '。

  1. 開啟設定打查看或編輯。(使用預設編輯器打開)

SHELL
git config --edit --global

進階 Log


  1. 建立更好看的 log 別名。 紅色 Git SHA-1 ID,黃色 Tag 名稱, 綠色 Commit Time, Commit 作者

SHELL
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(yellow)<%an>%Creset' --abbrev-commit"
SHELL
git lg
原始 log
修改後的 log
  1. 使用條件查找 Log 。(包含特定字串、Commit 作者...)

SHELL
git lg -S<字串>
git lg --committer="<Commit 作者>"
git lg --since='<時間> <時間單位>'

<時間單位>: minute, hour, day, week, month, year

Diff


  1. 比對尚未進入 Staging area 的檔案的差異。或是指定比對。

SHELL
git diff 
git diff <檔案名稱>
git diff <Git SHA-1 ID>
git diff <Git SHA-1 ID> <Git SHA-1 ID>
git diff <Branch 名稱> <Branch 名稱>

--cached: 比對已進入 Staging area 的檔案。

---stat: 僅顯示差異摘要。

>*.txt: 將比對結果輸出為文字檔。

-紅色標記: 刪除。 + 綠色標記: 新增。 黃色標記: 修改。

Blame

找出文件每一行的作者。它提供文件的逐行註釋,Commit 、作者姓名和每行的最後修改日期。

SHELL
git blame <檔案>

Bisect

bisect(二進制搜索) 可幫助您找到錯誤的(壞的) Commit,並回復未修改前的(好的) Commit。 它透過 Commit 歷史執行二進制搜索,縮小可能的 Commit 範圍來定位錯誤的 Commit。

在每個步驟中,會消除剩餘一半的 Commit,讓您可以高效地定位有問題的Commit。它自動縮小錯誤的 Commit 的範圍。

  1. 啟動 bisect。

SHELL
git bisect start
git bisect good <已知的壞的 Git SHA-1 ID> <已知的好的 Git SHA-1 ID>

  1. 此時,您需要檢查或運行程式碼並確定錯誤是否存在。 (Git 會自動 Checkout Commit 供您測試)

  2. 將當前 Commit 標記為好的或壞的。

SHELL
git bisect good
git bisect bad

  1. 找到問題壞的 Commit時,退出 bisect。

SHELL
git bisect reset

參考資料


利用git diff 來為版本控制專案找出差異

Who Broke My Test? A Git Bisect Tutorial | Sumo Logic

使用 Git Bisect 快速找到第一個有問題的 Commit | Puck's Blog

Puck's Blog

Last updated

Was this helpful?