\Git的最新版帶來了豐富的新功能以及內部更新,包括改進的diff、branch和grep,更好的命令行補全,新的range-diff命令等。\\Git diff現在可以正確地標記以intent-to-add參數添加的新文件路徑。intent-to-add可以和git add命令一起使用,完整寫法即git add --intent-to-add\u0026lt;文件名\u0026gt;,以給工作樹添加一個空文件。這很有用,這樣git diff可以在其輸出中展示新文件的完整內容。但是之前,diff中的文件路徑沒有被標記成新的。在一份相關說明提到,apply命令也改進了其對intent-to-add選項的處理。事實上,現在在應用補丁時,給索引添加新路徑只影響到用intent-to-add添加了所有新文件的工作樹。回過來看diff,color-moved選項已經擴展為支持新的color-moved-ws變體,它專門制作git diff移動的彩色行,而其他未改變則顯示空白。Git 2.18中類似的功能是利用color-moved和ignore-space-change來實現的,盡管后一個選項將被應用于整個輸出,而不只是移動的行。\\Git grep有了兩個新選項:列(column),它給輸出添加第一個匹配的列號;以及唯一匹配的(only-matching),它限制輸出為正則表達式的匹配部分,而不是整個匹配行。\\
Git 2.19用兩種方式改進了git branch列表。首先,git branch –list現在從branch.sort配置變量讀取其默認排序選項,與git tag –list從tag.sort中獲取其默認排序選項類似。此外,git branch的-l選項(它是-create-reflog的簡寫)已經被棄用,以防止開發人員無意中把它當做-list的別名使用。
\\\自2.6版本開始,Git提供git fsck命令以檢查被推送到存儲庫的對象的完整性。這項測試可以在接收端執行,并用receive.fsck.*變量進行配置。例如,如果因為zero-padded文件模式定義receive.fsck.zeroPaddedFilemode變量導致fsck失敗的話,您可以讓Git拒絕推送。Git 2.19利用fetch.fsck.*變量,為git fetch提供相似的功能。\\在實現方面,git子模塊foreach用C進行了重寫,性能因此得到了改進。此外,對命令行補全的支持也得到了改進,現在會列出子命令所用的配置變量列表和包括帶-no-前綴的選項。git fetch命令支持新的-negotiation-tip選項以減少返回的提交集。當本地存儲庫具有在遠程歷史記錄中不存在的大量引用時,這能提高帶寬和性能。\\在開發方面,Git 2.19已經禁用strcat,這被認為太危險了,現在會引起編譯失敗。\\還有很多Git 2.19中的新功能我們沒有在這里進行介紹。如果您有興趣了解全部的細節,請別錯過官方發布說明。
\\查看英文原文:Git 2.19 Improves Diff, Branch, and Grep, and More??
\\感謝冬雨對本文的審校。