uTools-Manuals/docs/git/gitcredentials.html
2019-04-08 23:22:26 +08:00

5 lines
8.5 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="c-markdown doc-markdown"><div class="doc-postil"><div class="c-markdown"><h2>命名</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>gitcredentials  - 为 Git 提供用户名和密码</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>概要</h2></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">git config credential.https://example.com.username myusername
git config credential.helper "$helper $options"</pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>描述</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>Git 有时需要用户的证书才能执行操作; 例如,它可能需要询问用户名和密码才能通过 HTTP 访问远程存储库。本手册描述了 Git 用于请求这些凭证的机制,以及一些避免重复输入这些凭证的功能。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>请求凭证</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>没有定义任何凭证助手Git 会尝试使用以下策略来询问用户的用户名和密码:</p></div></div><div class="doc-postil"><div class="c-markdown"><p>1. 如果<code>GIT_ASKPASS</code>设置了环境变量,则调用该变量指定的程序。在命令行上向程序提供适当的提示,并从标准输出中读取用户的输入。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>2. 否则,如果<code>core.askPass</code>配置变量被设置,则其值如上使用。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>3. 否则,如果<code>SSH_ASKPASS</code>设置了环境变量,则其值如上使用。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>4. 否则,在终端上提示用户。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>避免重复</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>一遍又一遍地输入相同的凭证可能会很麻烦。Git 提供了两种方法来减轻这种烦恼:</p></div></div><div class="doc-postil"><div class="c-markdown"><p>1. 给定认证上下文的用户名的静态配置。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>2. 凭据助手缓存或存储密码,或与系统密码钱包或钥匙串进行交互。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果您没有可用于密码的安全存储,则第一种方法很简单且适用。通常通过将此添加到您的配置来进行配置:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">[credential "https://example.com"]
        username = me</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>另一方面,凭证助手是 Git 可以从中请求用户名和密码的外部程序; 它们通常与操作系统或其他程序提供的安全存储接口。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>要使用助手您必须先选择一个使用。Git 目前包含以下帮助程序:</p></div></div><div class="doc-postil"><div class="c-markdown"><p>cache</p></div></div><div class="doc-postil"><div class="c-markdown"><p>将内存中的凭据缓存一段时间。有关详细信息,请参阅 git-credential-cache [1] 。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>store</p></div></div><div class="doc-postil"><div class="c-markdown"><p>无限期地将凭证存储在磁盘上。有关详细信息,请参阅 git-credential-store [1] 。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>您也可能安装了第三方助手; <code>credential-*</code>在输出中搜索<code>git help -a</code>,并查阅单个助手的文档。一旦你选择了一个助手,你可以通过把它的名字放入 credential.helper 变量来告诉 Git 使用它。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>1. 寻找帮手。$ git help -a | grep credential- credential-foo</p></div></div><div class="doc-postil"><div class="c-markdown"><p>2. 阅读它的描述。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>$ git help credential-foo</p></div></div><div class="doc-postil"><div class="c-markdown"><p>3. 告诉 Git 使用它。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>$ git config --global credential.helper foo</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>凭据上下文</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>Git 认为每个凭证都有一个由 URL 定义的上下文。此上下文用于查找特定于上下文的配置,并传递给任何助手,这些助手可将其用作安全存储的索引。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>例如,假设我们正在访问<code>https://example.com/foo.git</code>。当 Git 查看配置文件以查看某个节是否与此上下文相匹配时,如果上下文是配置文件中模式的更具体子集,它将认为这两个匹配。例如,如果你在你的配置文件中有这个:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">[credential "https://example.com"]
        username = foo</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>那么我们将匹配:两个协议是相同的,两个主机都是相同的,并且“模式” URL 完全不关心路径组件。但是,这种上下文不匹配:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">[credential "https://kernel.org"]
        username = foo</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>因为主机名称不同。它也不会匹配<code>foo.example.com</code>; Git 完全比较主机名,而不考虑两台主机是否属于同一个域。同样,一个配置项<code>http://example.com</code>不匹配Git 完全比较协议。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>配置选项</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>凭证上下文的选项可以配置为<code>credential.*</code>(适用于所有凭证),或者<code>credential.&lt;url&gt;.*</code> &lt;url&gt; 与上述的上下文匹配。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>以下选项可在任一位置使用:</p></div></div><div class="doc-postil"><div class="c-markdown"><p>helper</p></div></div><div class="doc-postil"><div class="c-markdown"><p>外部凭证助手的名称以及任何关联的选项。如果帮助程序名称不是绝对路径,则该字符串<code>git credential-</code>被前置。得到的字符串由 shell 执行(例如,设置<code>foo --option=bar</code>它将<code>git credential-foo --option=bar</code>通过 shell 执行。有关它们的使用示例,请参阅特定帮助程序的手册。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果<code>credential.helper</code>配置变量有多个实例,则会依次尝试每个助手,并可能提供用户名,密码或任何内容。一旦 Git 获得用户名和密码,就不会再尝试更多的助手。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果<code>credential.helper</code>配置为空字符串,则会将帮助程序列表重置为空(因此您可以通过配置空字符串帮助程序,随后选择任意一组帮助程序来覆盖由较低优先级配置文件设置的帮助程序)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>username</p></div></div><div class="doc-postil"><div class="c-markdown"><p>默认的用户名,如果没有在 URL 中提供。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>useHttpPath</p></div></div><div class="doc-postil"><div class="c-markdown"><p>默认情况下Git 不认为 http URL 的“路径”组件值得通过外部助手进行匹配。这意味着存储的凭证<code>https://example.com/foo.git</code>也将被用于<code>https://example.com/bar.git</code>。如果您想区分这些情况,请将此选项设置为<code>true</code></p></div></div><div class="doc-postil"><div class="c-markdown"><h2>自定义助手</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>您可以编写自己的自定义助手来与您保存凭据的任何系统进行交互。有关详细信息,请参阅 Git 凭据 API 的文档。</p></div></div></div>