Git Credential Manager 對於大多數使用者來說是開箱即用的。提供了一些組態選項來自訂或調整其行為。
Git Credential Manager (GCM) 可以使用環境變數進行設定。 環境變數的優先級高於設定選項和企業系統管理員的預設值。
有關 GCM 能理解的完整環境變數列表,請參閱下文。
啟用所有活動的追蹤記錄。
將 Git 和 GCM 設定為追蹤到相同的位置通常是理想的作法,且 GCM 與 GIT_TRACE 相容並協同運作。
SET GIT_TRACE=%UserProfile%\git.log
SET GCM_TRACE=%UserProfile%\git.log
export GIT_TRACE=$HOME/git.log
export GCM_TRACE=$HOME/git.log
如果 GCM_TRACE 的值是現有目錄中檔案的完整路徑,記錄將會附加到該檔案。
如果 GCM_TRACE 的值是 true 或 1,記錄將會寫入標準錯誤。
預設為停用。
另請參閱:credential.trace
啟用追蹤秘密和敏感資訊,這些資訊預設在追蹤輸出中會被遮罩。需要同時啟用 GCM_TRACE。
SET GCM_TRACE=%UserProfile%\gcm.log
SET GCM_TRACE_SECRETS=1
export GCM_TRACE=$HOME/gcm.log
export GCM_TRACE_SECRETS=1
如果 GCM_TRACE_SECRETS 的值是 true 或 1,追蹤記錄將包含秘密資訊。
預設為停用。
在 GCM 追蹤輸出中包含 Microsoft Authentication Library (MSAL) 的記錄。需要同時啟用 GCM_TRACE。
SET GCM_TRACE=%UserProfile%\gcm.log
SET GCM_TRACE_MSAUTH=1
export GCM_TRACE=$HOME/gcm.log
export GCM_TRACE_MSAUTH=1
如果 GCM_TRACE_MSAUTH 的值是 true 或 1,追蹤記錄將包含詳細的 MSAL 記錄。
預設為停用。
在 GCM 啟動時暫停執行,以等待偵錯工具附加。
SET GCM_DEBUG=1
export GCM_DEBUG=1
預設為停用。
另請參閱:credential.debug
允許或停用 GCM 與使用者互動(顯示 GUI 或 TTY 提示)。如果需要互動但已被停用,則會傳回錯誤。
這在無周邊(headless)和無人值守的環境中(例如建置伺服器)很有用,在這些環境中,失敗比無限期地掛起等待一個不存在的使用者要好。
若要停用互動性,請將此設定為 false 或 0。
在 GCM 的舊版本中,此設定有不同的行為並接受其他值。下表總結了行為的變化以及舊值(如 never)的對應關係:
| 值 | 舊意義 | 新意義 |
|---|---|---|
auto |
如果需要則提示 – 盡可能使用快取憑證 | (不變) |
never, false |
永不提示 – 如果需要互動則失敗 | (不變) |
always, force, true |
總是提示 – 不使用快取憑證 | 如果需要則提示(與舊的 auto 值相同) |
SET GCM_INTERACTIVE=0
export GCM_INTERACTIVE=0
預設為啟用。
定義驗證時要使用的主機提供者。
| ID | 提供者 |
|---|---|
auto (預設) |
[自動] (了解更多) |
azure-repos |
Azure Repos |
github |
GitHub |
gitlab |
GitLab (支援瀏覽器中的 OAuth、個人存取權杖和基本驗證) |
generic |
通用(任何其他未列出的提供者) |
自動提供者選擇是基於遠端 URL。
此設定通常與範圍 URL 一起使用,以將一組特定的遠端 URL 對應到提供者,例如將主機標記為 GitHub Enterprise 執行個體。
SET GCM_PROVIDER=github
export GCM_PROVIDER=github
另請參閱:credential.provider
此設定已棄用,應由
GCM_PROVIDER及其對應的提供者 ID 值取代。更多資訊請參閱遷移指南。
根據提供者支援的授權單位來選擇驗證時要使用的主機提供者。
| 授權單位 | 提供者 |
|---|---|
auto (預設) |
[自動] |
msa, microsoft, microsoftaccount, aad, azure, azuredirectory, live, liveconnect, liveid |
Azure Repos (支援 Microsoft 驗證) |
github |
GitHub (支援 GitHub 驗證) |
gitlab |
GitLab (支援瀏覽器中的 OAuth、個人存取權杖和基本驗證) |
basic, integrated, windows, kerberos, ntlm, tfs, sso |
通用 (支援基本和 Windows 整合驗證) |
SET GCM_AUTHORITY=github
export GCM_AUTHORITY=github
另請參閱:credential.authority
允許或停用 GCM 顯示 GUI 提示。如果存在等效的終端機/文字型提示,則會改為顯示該提示。
若要停用所有互動性,請參閱 GCM_INTERACTIVE。
SET GCM_GUI_PROMPT=0
export GCM_GUI_PROMPT=0
預設為啟用。
另請參閱:credential.guiPrompt
強制使用軟體渲染來顯示 GUI 提示。
這目前僅適用於 Windows。
SET GCM_GUI_SOFTWARE_RENDERING=1
export GCM_GUI_SOFTWARE_RENDERING=1
預設為 false(在可用時使用硬體加速)。
[!NOTE] Windows on ARM 裝置預設使用軟體渲染以解決已知的 Avalonia 問題:https://github.com/AvaloniaUI/Avalonia/issues/10405
另請參閱:credential.guiSoftwareRendering
允許將憑證傳輸到不安全的遠端 URL,例如未加密的 HTTP URL。不建議一般使用此設定,僅在必要時使用。
預設為 false(不允許不安全的遠端 URL)。
SET GCM_ALLOW_UNSAFE_REMOTES=true
export GCM_ALLOW_UNSAFE_REMOTES=true
另請參閱:credential.allowUnsafeRemotes
設定 GCM 在主機提供者自動偵測探測期間等待網路回應的最長時間(以毫秒為單位)。
更多資訊請參閱自動偵測。
注意: 使用負值或零值可完全停用探測。
預設為 2000 毫秒(2 秒)。
SET GCM_AUTODETECT_TIMEOUT=-1
export GCM_AUTODETECT_TIMEOUT=-1
另請參閱:credential.autoDetectTimeout
允許為通用主機提供者偵測 Windows 整合驗證 (WIA) 支援。將此值設定為 false 將阻止使用 WIA,並在使用通用主機提供者時強制進行基本驗證提示。
注意: WIA 僅在 Windows 上受支援。
注意: WIA 是 NTLM 和 Kerberos(以及 Negotiate)的總稱。
| 值 | WIA 偵測 |
|---|---|
true, 1, yes, on (預設) |
允許 |
false, 0, no, off |
不允許 |
SET GCM_ALLOW_WINDOWSAUTH=0
export GCM_ALLOW_WINDOWSAUTH=0
另請參閱:credential.allowWindowsAuth
此設定已棄用,應由標準的
http.proxyGit 設定選項取代。更多資訊請參閱 HTTP 代理伺服器設定。
設定 GCM 使用代理伺服器進行網路操作。
注意: Git 本身並不遵守此設定;這僅影響 GCM。
SET GCM_HTTP_PROXY=http://john.doe:password@proxy.contoso.com
export GCM_HTTP_PROXY=http://john.doe:password@proxy.contoso.com
另請參閱:credential.httpProxy
覆寫 Bitbucket 驗證期間顯示的可用驗證模式。如果未設定此選項,則會自動偵測可用的驗證模式。
注意: 此設定僅適用於 Bitbucket.org,不適用於 Server 或 DC 執行個體。
注意: 此設定支援以逗號分隔的多個值。
| 值 | 驗證模式 |
|---|---|
| (未設定) | 自動偵測模式 |
oauth |
基於 OAuth 的驗證 |
basic |
基於基本/PAT 的驗證 |
SET GCM_BITBUCKET_AUTHMODES="oauth,basic"
export GCM_BITBUCKET_AUTHMODES="oauth,basic"
另請參閱:credential.bitbucketAuthModes
強制 GCM 忽略任何現有的已儲存基本驗證或 OAuth 存取權杖,並在將憑證返回給 Git 之前,總是執行刷新憑證的流程。
這對於 OAuth 憑證尤其重要。Bitbucket.org 存取權杖在 2 小時後過期,之後必須使用刷新權杖來取得新的存取權杖。
如果平均提交頻率低於每 2 小時一次,啟用此選項將在使用 Oauth2 與 Bitbucket.org 互動時提高效能。
啟用此選項將在使用基本驗證時降低效能,因為每次都需要使用者重新輸入憑證。
| 值 | 返回前刷新憑證 |
|---|---|
true, 1, yes, on |
總是 |
false, 0, no, off(預設) |
僅當發現憑證無效時 |
SET GCM_BITBUCKET_ALWAYS_REFRESH_CREDENTIALS=1
export GCM_BITBUCKET_ALWAYS_REFRESH_CREDENTIALS=1
預設為 false/停用。
另請參閱:credential.bitbucketAlwaysRefreshCredentials
強制 GCM 在將任何已儲存的憑證返回給 Git 之前對其進行驗證。它透過呼叫需要驗證的 REST API 資源來實現此目的。
停用此選項可減少 GCM 在擷取憑證時的 HTTP 流量。這可能會改善使用者效能,但會增加 Git 遠端呼叫無法向主機進行驗證的次數,因此需要使用者重試 Git 遠端呼叫。
啟用此選項有助於確保 Git 始終獲得有效的憑證。
| 值 | 驗證憑證 |
|---|---|
true, 1, yes, on(預設) |
總是 |
false, 0, no, off |
永不 |
SET GCM_BITBUCKET_VALIDATE_STORED_CREDENTIALS=1
export GCM_BITBUCKET_VALIDATE_STORED_CREDENTIALS=1
預設為 true/啟用。
另請參閱:credential.bitbucketValidateStoredCredentials
若要搭配 Bitbucket DC 使用 OAuth,必須建立一個外部的、傳入的 AppLink。
然後,必須使用 AppLink 中的 OAuth ClientId 和 ClientSecret 來設定本地 GCM 安裝。
SET GCM_BITBUCKET_DATACENTER_CLIENTID=1111111111111111111
export GCM_BITBUCKET_DATACENTER_CLIENTID=1111111111111111111
預設為未定義。
另請參閱:credential.bitbucketDataCenterOAuthClientId
若要搭配 Bitbucket DC 使用 OAuth,必須建立一個外部的、傳入的 AppLink。
然後,必須使用 AppLink 中的 OAuth ClientId 和 ClientSecret 來設定本地 GCM 安裝。
SET GCM_BITBUCKET_DATACENTER_CLIENTSECRET=222222222222222222222
export GCM_BITBUCKET_DATACENTER_CLIENTSECRET=222222222222222222222
預設為未定義。
另請參閱:credential.bitbucketDataCenterOAuthClientSecret
當有多個可用帳戶時,根據伺服器提示啟用或停用 GitHub 的自動帳戶篩選。此設定僅適用於具有企業受管理使用者的 GitHub.com。
| 值 | 描述 |
|---|---|
true (預設) |
根據伺服器提示篩選可用帳戶。 |
false |
顯示所有可用帳戶。 |
SET GCM_GITHUB_ACCOUNTFILTERING=false
export GCM_GITHUB_ACCOUNTFILTERING=false
另請參閱:credential.gitHubAccountFiltering
覆寫 GitHub 驗證期間顯示的可用驗證模式。如果未設定此選項,則會自動偵測可用的驗證模式。
注意: 此設定支援以逗號分隔的多個值。
| 值 | 驗證模式 |
|---|---|
| (未設定) | 自動偵測模式 |
oauth |
展開為:browser, device |
browser |
透過網頁瀏覽器進行 OAuth 驗證 (需要 GUI) |
device |
使用裝置代碼進行 OAuth 驗證 |
basic |
使用使用者名稱和密碼進行基本驗證 |
pat |
基於個人存取權杖 (pat) 的驗證 |
SET GCM_GITHUB_AUTHMODES="oauth,basic"
export GCM_GITHUB_AUTHMODES="oauth,basic"
另請參閱:credential.gitHubAuthModes
覆寫 GitLab 驗證期間顯示的可用驗證模式。如果未設定此選項,則會自動偵測可用的驗證模式。
注意: 此設定支援以逗號分隔的多個值。
| 值 | 驗證模式 |
|---|---|
| (未設定) | 自動偵測模式 |
browser |
透過網頁瀏覽器進行 OAuth 驗證 (需要 GUI) |
basic |
使用使用者名稱和密碼進行基本驗證 |
pat |
基於個人存取權杖 (pat) 的驗證 |
SET GCM_GITLAB_AUTHMODES="browser"
export GCM_GITLAB_AUTHMODES="browser"
另請參閱:credential.gitLabAuthModes
在作業系統憑證存放區中讀取和寫入憑證時,使用自訂的命名空間前綴。憑證將以 {namespace}:{service} 的格式儲存。
預設值為 git。
SET GCM_NAMESPACE="my-namespace"
export GCM_NAMESPACE="my-namespace"
另請參閱:credential.namespace
在支援的平台上選擇要使用的憑證存放區類型。
在 Windows 上的預設值是 wincredman,在 macOS 上是 keychain,在 Linux 上則未設定。
注意: 關於設定秘密存放區的更多資訊,請參閱憑證存放區文件。
| 值 | 憑證存放區 | 平台 |
|---|---|---|
| (未設定) | Windows: wincredman, macOS: keychain, Linux: (無) |
- |
wincredman |
Windows Credential Manager (無法透過 SSH 使用)。 | Windows |
dpapi |
DPAPI 保護的檔案。使用 GCM_DPAPI_STORE_PATH 自訂 DPAPI 存放區位置 |
Windows |
keychain |
macOS Keychain。 | macOS |
secretservice |
freedesktop.org Secret Service API 透過 libsecret (需要圖形介面來解鎖秘密集合)。 | Linux |
gpg |
使用 GPG 儲存與 pass 工具 相容的加密檔案 (需要 GPG 和 pass 來初始化存放區)。 |
macOS, Linux |
cache |
Git 內建的憑證快取。 | Windows, macOS, Linux |
plaintext |
將憑證儲存在純文字檔案中 (不安全)。使用 GCM_PLAINTEXT_STORE_PATH 自訂純文字存放區位置。 |
Windows, macOS, Linux |
none |
不透過 GCM 儲存憑證。 | Windows, macOS, Linux |
SET GCM_CREDENTIAL_STORE="gpg"
export GCM_CREDENTIAL_STORE="gpg"
另請參閱:credential.credentialStore
當 GCM_CREDENTIAL_STORE 設定為 cache 時,將選項傳遞給 Git 憑證快取。這允許您透過傳遞 "--timeout <seconds>" 來選擇不同的憑證快取時間(預設為 900 秒)。使用其他選項如 --socket 未經測試且不受支援,但沒有理由它不應該工作。
預設為空。
SET GCM_CREDENTIAL_CACHE_OPTIONS="--timeout 300"
export GCM_CREDENTIAL_CACHE_OPTIONS="--timeout 300"
當 GCM_CREDENTIAL_STORE 設定為 plaintext 時,指定一個自訂目錄來儲存純文字憑證檔案。
預設值為 ~/.gcm/store 或 %USERPROFILE%\.gcm\store。
SETX GCM_PLAINTEXT_STORE_PATH=D:\credentials
export GCM_PLAINTEXT_STORE_PATH=/mnt/external-drive/credentials
另請參閱:credential.plaintextStorePath
當 GCM_CREDENTIAL_STORE 設定為 dpapi 時,指定一個自訂目錄來儲存 DPAPI 保護的憑證檔案。
預設值為 %USERPROFILE%\.gcm\dpapi_store。
SETX GCM_DPAPI_STORE_PATH=D:\credentials
另請參閱:credential.dpapiStorePath
指定 pass 使用的 gpg 版本的路徑(_包含_可執行檔名稱)(如果存在 gpg2 則為 gpg2,否則為 gpg)。這主要是為了允許手動解決在舊版 Linux 系統上並行安裝 gpg 和 gpg2 時發生的衝突。
如果未指定,GCM 預設使用 $PATH 上的 gpg2 版本,如果找不到 gpg2,則退回到 gpg。
export GCM_GPG_PATH="/usr/local/bin/gpg2"
無對應的設定。
指定在執行 Microsoft 驗證且需要互動式流程時應使用的驗證流程。
預設為 auto。
注意: 如果 GCM_MSAUTH_USEBROKER 設定為 true 且作業系統驗證代理程式可用,則所有流程都將委派給代理程式。如果這兩者都為真,則 GCM_MSAUTH_FLOW 的值沒有效果。
| 值 | 驗證流程 |
|---|---|
auto (預設) |
根據當前環境和平台選擇最佳選項。 |
embedded |
顯示帶有嵌入式網頁檢視控制項的視窗。 |
system |
開啟使用者的預設網頁瀏覽器。 |
devicecode |
顯示裝置代碼。 |
SET GCM_MSAUTH_FLOW="devicecode"
export GCM_MSAUTH_FLOW="devicecode"
在可用時使用作業系統帳戶管理員。
預設為 false。在某些雲端託管環境中,當使用工作或學校帳戶時,例如 Microsoft DevBox,預設為 true。
這些預設值未來可能會變更。
注意: 在 Windows 上啟用此選項之前,請檢閱詳細資訊,了解這對您的本地 Windows 使用者帳戶意味著什麼。
| 值 | 描述 |
|---|---|
true |
使用作業系統帳戶管理員作為驗證代理程式。 |
false (預設) |
不使用代理程式。 |
SET GCM_MSAUTH_USEBROKER="true"
export GCM_MSAUTH_USEBROKER="false"
另請參閱:credential.msauthUseBroker
當代理程式啟用時,預設使用目前的作業系統帳戶。
預設為 false。在某些雲端託管環境中,當使用工作或學校帳戶時,例如 Microsoft DevBox,預設為 true。
這些預設值未來可能會變更。
| 值 | 描述 |
|---|---|
true |
預設使用目前的作業系統帳戶。 |
false (預設) |
不預設使用任何帳戶。 |
SET GCM_MSAUTH_USEDEFAULTACCOUNT="true"
export GCM_MSAUTH_USEDEFAULTACCOUNT="false"
另請參閱:credential.msauthUseDefaultAccount
指定 Azure Repos 主機提供者應返回的憑證類型。
預設值為 pat。在某些雲端託管環境中,當使用工作或學校帳戶時,例如 Microsoft DevBox,預設值為 oauth。
| 值 | 描述 |
|---|---|
pat |
Azure DevOps 個人存取權杖 |
oauth |
Microsoft 身分識別 OAuth 權杖 (AAD 或 MSA 權杖) |
關於 Azure 存取權杖的更多資訊可以在這裡找到。
SET GCM_AZREPOS_CREDENTIALTYPE="oauth"
export GCM_AZREPOS_CREDENTIALTYPE="oauth"
另請參閱:credential.azreposCredentialType
使用受控識別向 Azure Repos 進行驗證。
值 system 將告訴 GCM 使用系統指派的受控識別。
若要指定使用者指派的受控識別,請使用格式 id://{clientId},其中 {clientId} 是受控識別的用戶端 ID。或者,任何 GUID 格式的值也將被解釋為使用者指派的受控識別用戶端 ID。
若要指定與 Azure 資源相關聯的受控識別,您可以使用格式 resource://{resourceId},其中 {resourceId} 是資源的 ID。
有關受控識別的更多資訊,請參閱 Azure DevOps 文件。
| 值 | 描述 |
|---|---|
system |
系統指派的受控識別 |
[guid] |
具有指定用戶端 ID 的使用者指派的受控識別 |
id://[guid] |
具有指定用戶端 ID 的使用者指派的受控識別 |
resource://[guid] |
與相關聯資源的使用者指派的受控識別 |
SET GCM_AZREPOS_MANAGEDIDENTITY="id://11111111-1111-1111-1111-111111111111"
export GCM_AZREPOS_MANAGEDIDENTITY="id://11111111-1111-1111-1111-111111111111"
另請參閱:credential.azreposManagedIdentity
指定在為 Azure Repos 執行 Microsoft 驗證時要使用的服務主體的用戶端和租用戶 ID。
此設定的值應為格式:{tenantId}/{clientId}。
如果您設定此值,還必須設定至少一種驗證機制:
有關服務主體的更多資訊,請參閱 Azure DevOps 文件。
SET GCM_AZREPOS_SERVICE_PRINCIPAL="11111111-1111-1111-1111-111111111111/22222222-2222-2222-2222-222222222222"
export GCM_AZREPOS_SERVICE_PRINCIPAL="11111111-1111-1111-1111-111111111111/22222222-2222-2222-2222-222222222222"
另請參閱:credential.azreposServicePrincipal
在設定 GCM_AZREPOS_SERVICE_PRINCIPAL 的情況下,為 Azure Repos 執行 Microsoft 驗證時,指定服務主體的用戶端密碼。
SET GCM_AZREPOS_SP_SECRET="da39a3ee5e6b4b0d3255bfef95601890afd80709"
export GCM_AZREPOS_SP_SECRET="da39a3ee5e6b4b0d3255bfef95601890afd80709"
另請參閱:credential.azreposServicePrincipalSecret
在設定 GCM_AZREPOS_SERVICE_PRINCIPAL 的情況下,為 Azure Repos 作為服務主體進行驗證時,指定要使用的憑證指紋。
SET GCM_AZREPOS_SP_CERT_THUMBPRINT="9b6555292e4ea21cbc2ebd23e66e2f91ebbe92dc"
export GCM_AZREPOS_SP_CERT_THUMBPRINT="9b6555292e4ea21cbc2ebd23e66e2f91ebbe92dc"
另請參閱:credential.azreposServicePrincipalCertificateThumbprint
當使用憑證進行服務主體驗證時,此設定指定是否應將 X5C 宣告傳送至 STS。傳送 x5c 使應用程式開發人員能夠在 Azure AD 中輕鬆實現憑證輪替:此方法會將公開憑證連同權杖請求一起傳送至 Azure AD,以便 Azure AD 可以根據受信任的簽發者政策使用它來驗證主體名稱。這省去了應用程式管理員明確管理憑證輪替的需要。詳細資訊請參閱 https://aka.ms/msal-net-sni。
SET GCM_AZREPOS_SP_CERT_SEND_X5C="true"
export GCM_AZREPOS_SP_CERT_SEND_X5C="true"
另請參閱:credential.azreposServicePrincipalCertificateSendX5C
開啟 Trace2 Normal Format 追蹤 - 更多詳細資訊請參閱 Git 的 Trace2 Normal Format 文件。
SET GIT_TRACE2=%UserProfile%\log.normal
export GIT_TRACE2=~/log.normal
如果 GIT_TRACE2 的值是現有目錄中檔案的完整路徑,記錄將會附加到該檔案。
如果 GIT_TRACE2 的值是 true 或 1,記錄將會寫入標準錯誤。
預設為停用。
另請參閱:trace2.normalFormat
開啟 Trace2 Event Format 追蹤 - 更多詳細資訊請參閱 Git 的 Trace2 Event Format 文件。
SET GIT_TRACE2_EVENT=%UserProfile%\log.event
export GIT_TRACE2_EVENT=~/log.event
如果 GIT_TRACE2_EVENT 的值是現有目錄中檔案的完整路徑,記錄將會附加到該檔案。
如果 GIT_TRACE2_EVENT 的值是 true 或 1,記錄將會寫入標準錯誤。
預設為停用。
另請參閱:trace2.eventFormat
開啟 Trace2 Performance Format 追蹤 - 更多詳細資訊請參閱 Git 的 Trace2 Performance Format 文件。
SET GIT_TRACE2_PERF=%UserProfile%\log.perf
export GIT_TRACE2_PERF=~/log.perf
如果 GIT_TRACE2_PERF 的值是現有目錄中檔案的完整路徑,記錄將會附加到該檔案。
如果 GIT_TRACE2_PERF 的值是 true 或 1,記錄將會寫入標準錯誤。
預設為停用。
另請參閱:trace2.perfFormat