Git 2.35 源代碼控制發布

經過兩個月的開發,分散式原始碼控制系統Git 2.35已經發布。 Git 是最受歡迎、可靠和高效能的版本控制系統之一,提供基於分支和合併的靈活的非線性開發工具。為了確保歷史記錄的完整性和對追溯更改的抵抗力,在每次提交中都會使用整個先前歷史記錄的隱式哈希;還可以使用開發人員的數位簽名來驗證各個標籤和提交。

與先前版本相比,新版本共包含 494 個變更,由 93 名開發人員參與準備,其中 35 名開發人員首次參與開發。主要創新點:

  • 使用 SSH 金鑰對 Git 物件進行數位簽章的可能性已擴展。為了限制多個金鑰的有效期,新增了對 OpenSSH 指令「valid-before」和「valid-after」的支持,透過這些指令,您可以確保在開發人員之一輪換金鑰後正確使用簽章。在此之前,新舊金鑰的簽名分離存在一個問題——如果刪除舊金鑰,將無法驗證用它所做的簽名,如果保留它,則仍然可以驗證它的簽名。使用已被另一個金鑰被替換的舊密鑰會建立新簽名。使用 valid-before 和 valid-after 您可以根據建立簽署的時間來分隔金鑰的範圍。
  • 在 merge.conflictStyle 設定中,允許您選擇在合併期間顯示有關衝突的資訊的模式,出現了對「zdiff3」模式的支持,該模式將在衝突開始或結束時指定的所有標準行移到衝突之外區域,可以更緊湊地呈現資訊。
  • 「git stash」命令中新增了「--staged」模式,它允許您僅隱藏添加到索引的更改,例如在您需要暫時推遲一些複雜更改以便首先執行的情況下添加已經準備好的內容,並在一段時間後處理其餘的內容。此模式類似於「git commit」指令,只寫入索引中的更改,但不是在「git stash —staged」中建立新的提交,而是將結果儲存在 stash 暫存區域中。一旦需要更改,可以使用“git stash pop”命令恢復它們。
  • “git log”命令中新增了一個新的格式說明符“--format=%(describe)”,它允許您將“git log”的輸出與“git describe”命令的輸出結合。 「git describe」的參數直接在說明符內指定(“-format=%(describe:match= ,排除= )"),您也可以在其中包含縮短的標籤 ("—format=%(describe:tags= )")並配置標識物件的十六進位字元數(“—format=%(describe:abbrev= )”)。例如,要列出標籤沒有發布候選標籤的最後 8 個提交,並指定 8 個字元標識符,可以使用以下命令: $ git log -8 —format='%(describe:exclude=*-rc *,abbrev =13)' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2f95f94 v056-2.34.1-g642f56f95 v8b. 7 bbc2.34.1f203 v9-2980902-gffb2.34.1f640d v3. 41-212-gdf2.34.1c639adeb36 v65715-4132-gXNUMXbXNUMXaXNUMX
  • user.signingKey 設定現在支援新類型的金鑰,這些金鑰不限於「ssh-」類型並指定金鑰的完整檔案路徑。替代類型使用“key::”前綴指定,例如 ECDSA 密鑰的“key::ecdsa-sha2-nistp256”。
  • 在「—直方圖」模式下以及使用「—color-moved-ws」選項(控制顏色差異中空格的反白)時產生變化清單的速度已顯著提高。
  • 「git Jump」命令用於在解析合併衝突、查看差異或執行搜尋操作時向 Vim 提供有關準確跳到文件中所需位置的信息,從而能夠縮小所覆蓋的合併衝突的範圍。例如,要將操作限制為僅對“foo”目錄,可以指定“git Jump merge - foo”,並從處理中排除“Documentation”目錄 - “git Jump merge - ':^Documentation'”
  • 已經完成了標準化使用“size_t”類型而不是“unsigned long”來表示物件大小的值的工作,這使得對大於 4 GB 的檔案使用“clean”和“smudge”過濾器成為可能在所有平台上,包括具有LLP64 資料模型的平台,「unsigned long」類型僅限於4 個位元組。
  • 「git am」指令中新增了「-empty=(stop|drop|keep)」選項,該選項可讓您在從郵件信箱解析修補程式時選擇不包含修補程式的空訊息的行為。值「stop」將終止整個修補操作,「drop」將跳過空補丁,「keep」將建立一個空提交。
  • 向命令“git reset”、“git diff”、“git Britain”、“git fetch”、“git pull”和“git ls-files”添加了對部分索引(稀疏索引)的支持,以提高效能並節省空間repositories ,其中執行部分克隆操作(稀疏簽出)。
  • 「git稀疏-checkout init」指令已被棄用,應替換為「git稀疏-checkout set」。
  • 新增了新的「reftable」後端的初始實現,用於在儲存庫中儲存分支和標籤等參考。新後端使用 JGit 專案使用的區塊存儲,並針對存儲大量引用進行了最佳化。後端尚未與裁判系統集成,尚未準備好投入實際使用。
  • “git grep”命令的調色板已調整以匹配 GNU grep 實用程式。

來源: opennet.ru

添加評論