前言

Git 是開發現場不可或缺的工具,但如果被問到「最近 Git 有什麼變化嗎?」時,意外地可能有不少人答不上來。

目前最新版本仍是 2 系列,不過 Git 也持續為未來的主要版本進行各種改善。

這次要介紹的是,為了 Git 3.0 而受到關注的幾項變更。

什麼是 Git 3.0?

截至目前(2026 年 6 月),Git 3.0 尚未正式發布。
不過,在 Git 的郵件列表與開發社群中,仍持續推進著面向未來 3.0 的改善。

因此,若要理解未來的 Git,掌握目前正在進行的變更就很有價值。

1. 從 SHA-1 遷移到 SHA-256

最重大的變更之一,就是物件雜湊的遷移。
過去 Git 一直使用 SHA-1。

commit
tree
blob
tag

這些全部都由 SHA-1 來識別。
然而,SHA-1 被指出存在碰撞抗性問題,因此目前正逐步遷移到 SHA-256。

新的儲存庫可以用以下方式以 SHA-256 格式初始化:

git init --object-format=sha256

既有儲存庫不會立刻受到影響,但長期來看,未來很可能會逐漸以 SHA-256 為主流。

2. 導入 Reftable

在 Git 中,分支與標籤是以 refs 來管理的。
過去是透過以下多個檔案進行管理:

.git/refs/
packed-refs

目前正在逐步導入的 Reftable,是一種以提升速度、減少檔案數量、改善一致性為目的的新管理方式。
日常開發中可能不太會特別感受到,但大型儲存庫可望因此受益。

3. 採用 Rust

Git 長年以來都是用 C 語言開發。
近年來,也開始推動將部分功能以 Rust 實作。

主要目的是提升記憶體安全性與維護性。

Git 不會全面轉向 Rust,而是採取在必要之處逐步導入的方針。

4. 從 checkout 轉向 switch、restore

以下這些指令是在 Git 2.23 中新增的,不過我想還是有很多人尚未使用。

git switch
git restore

過去常用的 git checkout 同時具有切換分支與還原檔案這兩種角色。
現在則是像下面這樣,將功能明確分開了。

git switch feature/xxxx
git restore MainActivity.kt

目前 git checkout 仍然可以使用,但在新的用途上,建議改用 switchrestore

即使是 Git 3.0,使用方式也不會有大幅改變

聽到 Git 3.0,可能會以為會有很大的破壞性變更。
但實際上,重點是安全性提升、內部結構改善與效能優化等面向未來的改進。

平常經常使用的以下基本操作,不會突然改變。

  • commit
  • push
  • pull
  • merge

總結

Git 3.0 目前尚未正式發布,但準備工作正在穩步進行中。
特別值得關注的重點有以下四個:

  • 遷移到 SHA-256
  • 導入 Reftable
  • 採用 Rust
  • 轉向 switch、restore

平常習以為常使用的 Git,內部其實也仍在持續進化。
未來當正式的 Git 3.0 發布時,我也想再重新追蹤一次變更內容。

最後

最近單篇文章比較多,所以我也想挑戰看看能不能做成系列的主題。


原文出處:https://qiita.com/YuukiYoshida/items/a2d825e3ee3e3a4b6dbd


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝13   💬2   ❤️1
574
🥈
我愛JS
📝1   ❤️1
72
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登