gitcredentials

优质
小牛编辑
131浏览
2023-12-01

命名

gitcredentials - 为 Git 提供用户名和密码

概要

git config credential.https://example.com.username myusername
git config credential.helper "$helper $options"

描述

Git 有时需要用户的证书才能执行操作; 例如,它可能需要询问用户名和密码才能通过 HTTP 访问远程存储库。本手册描述了 Git 用于请求这些凭证的机制,以及一些避免重复输入这些凭证的功能。

请求凭证

没有定义任何凭证助手,Git 会尝试使用以下策略来询问用户的用户名和密码:

1. 如果GIT_ASKPASS设置了环境变量,则调用该变量指定的程序。在命令行上向程序提供适当的提示,并从标准输出中读取用户的输入。

2. 否则,如果core.askPass配置变量被设置,则其值如上使用。

3. 否则,如果SSH_ASKPASS设置了环境变量,则其值如上使用。

4. 否则,在终端上提示用户。

避免重复

一遍又一遍地输入相同的凭证可能会很麻烦。Git 提供了两种方法来减轻这种烦恼:

1. 给定认证上下文的用户名的静态配置。

2. 凭据助手缓存或存储密码,或与系统密码钱包或钥匙串进行交互。

如果您没有可用于密码的安全存储,则第一种方法很简单且适用。通常通过将此添加到您的配置来进行配置:

[credential "https://example.com"]
        username = me

另一方面,凭证助手是 Git 可以从中请求用户名和密码的外部程序; 它们通常与操作系统或其他程序提供的安全存储接口。

要使用助手,您必须先选择一个使用。Git 目前包含以下帮助程序:

cache

将内存中的凭据缓存一段时间。有关详细信息,请参阅 git-credential-cache [1] 。

store

无限期地将凭证存储在磁盘上。有关详细信息,请参阅 git-credential-store [1] 。

您也可能安装了第三方助手; credential-*在输出中搜索git help -a,并查阅单个助手的文档。一旦你选择了一个助手,你可以通过把它的名字放入 credential.helper 变量来告诉 Git 使用它。

1. 寻找帮手。$ git help -a | grep credential- credential-foo

2. 阅读它的描述。

$ git help credential-foo

3. 告诉 Git 使用它。

$ git config --global credential.helper foo

凭据上下文

Git 认为每个凭证都有一个由 URL 定义的上下文。此上下文用于查找特定于上下文的配置,并传递给任何助手,这些助手可将其用作安全存储的索引。

例如,假设我们正在访问https://example.com/foo.git。当 Git 查看配置文件以查看某个节是否与此上下文相匹配时,如果上下文是配置文件中模式的更具体子集,它将认为这两个匹配。例如,如果你在你的配置文件中有这个:

[credential "https://example.com"]
        username = foo

那么我们将匹配:两个协议是相同的,两个主机都是相同的,并且“模式” URL 完全不关心路径组件。但是,这种上下文不匹配:

[credential "https://kernel.org"]
        username = foo

因为主机名称不同。它也不会匹配foo.example.com; Git 完全比较主机名,而不考虑两台主机是否属于同一个域。同样,一个配置项http://example.com不匹配:Git 完全比较协议。

配置选项

凭证上下文的选项可以配置为credential.*(适用于所有凭证),或者credential.<url>.* <url> 与上述的上下文匹配。

以下选项可在任一位置使用:

helper

外部凭证助手的名称以及任何关联的选项。如果帮助程序名称不是绝对路径,则该字符串git credential-被前置。得到的字符串由 shell 执行(例如,设置foo --option=bar它将git credential-foo --option=bar通过 shell 执行。有关它们的使用示例,请参阅特定帮助程序的手册。

如果credential.helper配置变量有多个实例,则会依次尝试每个助手,并可能提供用户名,密码或任何内容。一旦 Git 获得用户名和密码,就不会再尝试更多的助手。

如果credential.helper配置为空字符串,则会将帮助程序列表重置为空(因此您可以通过配置空字符串帮助程序,随后选择任意一组帮助程序来覆盖由较低优先级配置文件设置的帮助程序)。

username

默认的用户名,如果没有在 URL 中提供。

useHttpPath

默认情况下,Git 不认为 http URL 的“路径”组件值得通过外部助手进行匹配。这意味着存储的凭证https://example.com/foo.git也将被用于https://example.com/bar.git。如果您想区分这些情况,请将此选项设置为true

自定义助手

您可以编写自己的自定义助手来与您保存凭据的任何系统进行交互。有关详细信息,请参阅 Git 凭据 API 的文档。