Git 是開發現場不可或缺的工具,但如果被問到「最近 Git 有什麼變化嗎?」時,意外地可能有不少人答不上來。
目前最新版本仍是 2 系列,不過 Git 也持續為未來的主要版本進行各種改善。
這次要介紹的是,為了 Git 3.0 而受到關注的幾項變更。
截至目前(2026 年 6 月),Git 3.0 尚未正式發布。
不過,在 Git 的郵件列表與開發社群中,仍持續推進著面向未來 3.0 的改善。
因此,若要理解未來的 Git,掌握目前正在進行的變更就很有價值。
最重大的變更之一,就是物件雜湊的遷移。
過去 Git 一直使用 SHA-1。
commit
tree
blob
tag
這些全部都由 SHA-1 來識別。
然而,SHA-1 被指出存在碰撞抗性問題,因此目前正逐步遷移到 SHA-256。
新的儲存庫可以用以下方式以 SHA-256 格式初始化:
git init --object-format=sha256
既有儲存庫不會立刻受到影響,但長期來看,未來很可能會逐漸以 SHA-256 為主流。
在 Git 中,分支與標籤是以 refs 來管理的。
過去是透過以下多個檔案進行管理:
.git/refs/
packed-refs
目前正在逐步導入的 Reftable,是一種以提升速度、減少檔案數量、改善一致性為目的的新管理方式。
日常開發中可能不太會特別感受到,但大型儲存庫可望因此受益。
Git 長年以來都是用 C 語言開發。
近年來,也開始推動將部分功能以 Rust 實作。
主要目的是提升記憶體安全性與維護性。
Git 不會全面轉向 Rust,而是採取在必要之處逐步導入的方針。
以下這些指令是在 Git 2.23 中新增的,不過我想還是有很多人尚未使用。
git switch
git restore
過去常用的 git checkout 同時具有切換分支與還原檔案這兩種角色。
現在則是像下面這樣,將功能明確分開了。
git switch feature/xxxx
git restore MainActivity.kt
目前 git checkout 仍然可以使用,但在新的用途上,建議改用 switch 與 restore。
聽到 Git 3.0,可能會以為會有很大的破壞性變更。
但實際上,重點是安全性提升、內部結構改善與效能優化等面向未來的改進。
平常經常使用的以下基本操作,不會突然改變。
Git 3.0 目前尚未正式發布,但準備工作正在穩步進行中。
特別值得關注的重點有以下四個:
平常習以為常使用的 Git,內部其實也仍在持續進化。
未來當正式的 Git 3.0 發布時,我也想再重新追蹤一次變更內容。
最近單篇文章比較多,所以我也想挑戰看看能不能做成系列的主題。
原文出處:https://qiita.com/YuukiYoshida/items/a2d825e3ee3e3a4b6dbd