1、概述
如果你使用GIT的SSH 方式連接遠端,並且設置了一個沒有口令的祕鑰,這樣就可以砸不輸入用戶名和密碼的情況下安全地傳輸數據。然而,這對 HTTP 協議來說是不可能的 ---- 每一個連接都是需要用戶名和密碼的。但是這樣使用就比較麻煩,而 GIT 提供了一個憑證系統來處理這個事情。
2、GIT 提供的憑證系統
GIT 提供的憑證系統,會有四種模式,分別是默認模式、cache(緩存)、store(磁盤存儲)、及keychain(鑰匙串)。
默認模式:所有的都不緩存,每一次都會詢問你的用戶名和密碼。
cache:會把憑證存放在內存中一段時間。密碼永遠不會被存儲在磁盤中,並且在15分鐘後從內存中清除。
store:會將憑證用明文的形式存放在磁盤中,並且永不過期(除非你修改了你在Git服務器上的密碼)。缺點就是密碼是明文保存的。
keychain:它會將憑證緩存到你係統用戶的鑰匙串中,跟store的區別是它會對密碼進行加密。在Mac 下,是"osxkeychain" 模式,在 windows 下,是"winsotre" 模式。
我們可以設置 GIT 的配置來選擇上述一種方式
git config --global credential.helper cache
其中的一些模式可接受一些選項。如"store" 模式可接受一個 --file
GIT 允許配置多個模式。當查找特定服務器的憑證時,GIT會按順序查詢,並且在找到第一個回答時停止查詢。當保存憑證時,GIT會將用戶名和密碼發送給 所有 配置裏表中的模式工具,它們會按自己的方式處理用戶名和密碼。如果你在閃存上有一個憑證文件,但又希望在該閃存被拔出的情況下使用內存緩存來保存用戶名密碼,.gitconfig 配置文件如下:
[credential]
helper = store --file /mnt/thumbdrive/.git-credentials
helper = cache --timeout 30000
查看可用命令
git config credential.helper
3、修改用戶名和密碼
能修改密碼的只有 store 和 keychain 模式。對於 store 我們找到它的文件打開進行修改就好了,這裏主要說一下 keychain 模式。
對於我們輸入的用戶名和郵箱賬號,都存儲在 .gitconfig 文件中,我們很簡單的就能找到(C:\用戶\username.gitconfig)。
但對於密碼就有點麻煩,其實找到系統的鑰匙串憑證的地方就可以了。
對於windows,其憑證在 “控制面板->憑證管理器->Windows憑證”下,找到相應的git配置就可以了。
對於mac,我估計也是一樣的,但是我沒有蘋果本,沒法驗證了。
感謝大家,我是假裝很努力的YoungYangD(小羊)。
參考資料:GIT官網文檔