眾所周知,Git用于唯一識別對象的SHA-1哈希算法最近被證明容易受到碰撞攻擊。雖然Git團(tuán)隊準(zhǔn)備過渡到一個新的更安全的散列算法,但它們已經(jīng)實現(xiàn)了一種算法,這種算法可以檢測和拒絕任何創(chuàng)建時帶有制造沖突目的的對象。這應(yīng)該會有效地減輕被攻擊的風(fēng)險。
在安全性方面,Git 2.13版本還修復(fù)了一個漏洞,這個漏洞會影響到所有使用git shell的Git托管服務(wù)器,它使攻擊者可以在遠(yuǎn)程服務(wù)器上靜默運(yùn)行shell命令。而該版本提供了一種更嚴(yán)格的方式,通過SSH來使用Git的push/pull命令和安裝在git-shell-commands目錄中的自定義命令。
同時,Git 2.13版本在UI方面也做了很多改進(jìn)。尤其對于為不同項目工作的所有開發(fā)人員來說,最有用的功能是通過條件配置來處理多個身份的能力。簡而言之,條件配置提供了一種基于一組條件來包含Git配置文件的方法。例如,您可以在 / .gitconfig文件中使用以下指令,以根據(jù)存儲庫所在目錄的路徑自定義Git配置:
[includeIf "gitdir:~/work/"] path = .gitconfig-work[includeIf "gitdir:~/play/"] path = .gitconfig-play具體來說,這可以用來在.gitconfig-work和.gitconfig-play中定義不同的用戶和電子郵件。
在Git 2.13版本中,幾乎所有開發(fā)人員都會使用到的功能是在Git命令中使用路徑規(guī)則,即pathspecs。 例如,如果要在存儲庫中對給定類型的所有文件執(zhí)行g(shù)rep,可以寫:
git grep my_pattern '*.c'現(xiàn)在,您還可以使用否定pathspecs(從命令中排除特定的pathspec)以及使用屬性的pathspec(在pathspec定義中包括這些屬性)。 例如:
git grep text_to_search -- src ':(exclude)*.c'其他顯著地改進(jìn)包括:
git branch、git tag和git for-each-ref現(xiàn)在支持的--no-contains選項,可用于選擇不包含指定提交的標(biāo)簽或分支,例如:
git tag -l --no-contains cf5c725 'v[0-9]*' | sort | tail -n 10
已有--contains選項時--no-contains選項會被忽略,例如查找在兩個標(biāo)簽之間創(chuàng)建的分支:
git branch --contains v2.8.0 --no-contains v2.10.0
git stash支持使用pathspecs來暫存當(dāng)前正在進(jìn)行的工作,從而允許更多地控制要被暫存的內(nèi)容。
子模塊現(xiàn)在有自己獨(dú)立的命令,包括checkout、grep和ls-files。 這意味著子模塊支持遞歸遍歷。 另外,git status --short可以查詢出有關(guān)子模塊的更多狀態(tài)信息。您可以閱讀完整的發(fā)版說明,詳細(xì)了解Git 2.13版本中的新功能。
查看英文原文:Git Continues to Improve Security and UI in Version 2.13