Git在版本2 13中繼續改進了安全性和UI

2021-09-16 18:13:05 字數 1651 閱讀 6886

git的最新版本做了很多改進,旨在改進其使用者介面,同時也修復了兩個重要的漏洞。

\u0026#xd;\n\u0026#xd;\n

眾所周知,git用於唯一識別物件的sha-1雜湊演算法最近被證明容易受到碰撞攻擊。雖然git團隊準備過渡到乙個新的更安全的雜湊演算法,但它們已經實現了一種演算法,這種演算法可以檢測和拒絕任何建立時帶有製造衝突目的的物件。這應該會有效地減輕被攻擊的風險。

\u0026#xd;\n\u0026#xd;\n

在安全性方面,git 2.13版本還修復了乙個漏洞,這個漏洞會影響到所有使用git shell的git託管伺服器,它使攻擊者可以在遠端伺服器上靜默執行shell命令。而該版本提供了一種更嚴格的方式,通過ssh來使用git的push/pull命令和安裝在git-shell-commands目錄中的自定義命令。

\u0026#xd;\n\u0026#xd;\n

同時,git 2.13版本在ui方面也做了很多改進。尤其對於為不同專案工作的所有開發人員來說,最有用的功能是通過條件配置來處理多個身份的能力。簡而言之,條件配置提供了一種基於一組條件來包含git配置檔案的方法。例如,您可以在〜/ .gitconfig檔案中使用以下指令,以根據儲存庫所在目錄的路徑自定義git配置:

\u0026#xd;\n\u0026#xd;\n

[includeif \"gitdir:~/work/\"]\u0026#xd;\n  path = .gitconfig-work\u0026#xd;\n[includeif \"gitdir:~/play/\"]\u0026#xd;\n  path = .gitconfig-play\u0026#xd;\n
\u0026#xd;\n\u0026#xd;\n

具體來說,這可以用來在.gitconfig-work和.gitconfig-play中定義不同的使用者和電子郵件。

\u0026#xd;\n\u0026#xd;\n

在git 2.13版本中,幾乎所有開發人員都會使用到的功能是在git命令中使用路徑規則,即pathspecs。 例如,如果要在儲存庫中對給定型別的所有檔案執行grep,可以寫:

\u0026#xd;\n\u0026#xd;\n

git grep my_pattern '*.c'\u0026#xd;\n
\u0026#xd;\n\u0026#xd;\n

現在,您還可以使用否定pathspecs(從命令中排除特定的pathspec)以及使用屬性的pathspec(在pathspec定義中包括這些屬性)。 例如:

\u0026#xd;\n\u0026#xd;\n

git grep text_to_search -- src ':(exclude)*.c'\u0026#xd;\n
\u0026#xd;\n\u0026#xd;\n

其他顯著地改進包括:

\u0026#xd;\n\u0026#xd;\n

您可以閱讀完整的發版說明,詳細了解git 2.13版本中的新功能。

\u0026#xd;\n\u0026#xd;\n

檢視英文原文:git continues to improve security and ui in version 2.13

\u0026#xd;\n\u0026#xd;\n

感謝冬雨對本文的審校。

\u0026#xd;\n

Git在版本2 13中繼續改進了安全性和UI

git的最新版本做了很多改進,旨在改進其使用者介面,同時也修復了兩個重要的漏洞。眾所周知,git用於唯一識別物件的sha 1雜湊演算法最近被證明容易受到碰撞攻擊。雖然git團隊準備過渡到乙個新的更安全的雜湊演算法,但它們已經實現了一種演算法,這種演算法可以檢測和拒絕任何建立時帶有製造衝突目的的物件。...

在 Git 中 Checkout 歷史版本

昨天寫 的時候,誤刪了乙個檔案。今天發現的時候,commit 已經 push 到版本庫了。本想用git reset回退版本,找回檔案後重新提交。但是想起 git 是乙個版本控制系統哎,直接從版本庫里 checkout 出某個檔案的歷史版本不就好了?想法挺好,但是很久沒用這個功能,自己已經不記得具體的...

在 Git 中 Checkout 歷史版本

昨天寫 的時候,誤刪了乙個檔案。今天發現的時候,commit 已經 push 到版本庫了。本想用git reset回退版本,找回檔案後重新提交。但是想起 git 是乙個版本控制系統哎,直接從版本庫里 checkout 出某個檔案的歷史版本不就好了?想法挺好,但是很久沒用這個功能,自己已經不記得具體的...