annuaire recherche
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
personnages

名称

git-credential  - 检索并存储用户凭证

概要

git credential <fill|approve|reject>

描述

Git 有一个内部接口,用于存储和检索系统特定助手的凭证,并提示用户输入用户名和密码。git-credential 命令将此接口公开给可能想要以与 Git 相同的方式检索,存储或提示凭据的脚本。这个脚本化接口的设计模拟了内部 C API; 有关这些概念的更多背景信息,请参阅 Git 凭证 API。

git-credential(GIT-凭证)呈现命令行的“动作”选项(fillapprovereject之一),并读取在 stdin 凭证描述(参见 INPUT / OUTPUT FORMAT)。

如果动作是fill,git-credential 将尝试通过读取配置文件,联系任何已配置的凭证助手,或通过提示用户来将“用户名”和“密码”属性添加到描述中。然后将凭证说明的用户名和密码属性与已提供的属性一起打印到 stdout。

如果动作是approve,则 git-credential 将把描述发送给任何配置的凭证助手,这些凭证助手可以存储该凭证供以后使用。

如果操作是reject,git-credential 将把描述发送给任何配置的凭证助手,这可能会擦除与描述匹配的任何存储的凭证。

如果动作是approve或者reject,则不应该发布输出。

典型的使用git credential(git 凭证)

使用 git-credential 的应用程序通常会使用git credential以下步骤:

1. 根据上下文生成凭证描述。例如,如果我们需要一个密码https://example.com/foo.git,我们可能会生成以下凭证描述(不要忘记最后一行的空行;它会告诉git credential应用程序完成了它提供的所有信息): protocol=https host=example.com path=foo.git

2. 请求 git-credential 为我们提供用于此说明的用户名和密码。这是通过运行完成的git credential fill,将步骤(1)中的描述反馈到其标准输入。标准输出将生成完整的凭证说明(包括凭证本身,即登录名和密码),如下所示:

protocol=https host=example.com username=bob password=secr3t

在大多数情况下,这意味着输入中给出的属性将在输出中重复,但Git也可能会修改凭证描述,例如,path在协议为 HTTP(s) 且credential.useHttpPath为 false 时删除该属性。

如果git credential知道密码,在返回password=secr3t之前,则此步骤可能没有涉及用户实际输入此密码(用户可能已输入密码来解锁钥匙串,或者,如果钥匙串已解锁,则没有用户交互)。

1. 使用凭证(例如,使用步骤(2)中的用户名和密码访问URL),并查看它是否被接受。

2. 报告密码的成功或失败。如果凭证允许操作成功完成,则可以使用“批准”操作标记该操作,以告知git credential在其下一次调用中重用该操作。如果凭证在操作过程中被拒绝,请使用“拒绝”操作,以便git credential在下次调用时要求输入新密码。在任何一种情况下,git credential都应提供从步骤(2)获得的证书说明(其中也包含步骤(1)中提供的证书)。

输入/输出格式

git credential在其标准输入/输出中读取和/或写入(取决于所使用的动作)证书信息。该信息可以对应于git credential将获得登录/密码信息(例如主机,协议,路径)的密钥或者要获得的实际证书数据(登录/密码)。

凭证分为一组命名属性,每行一个属性。每个属性由键值对指定,由=(等号)分隔,后跟换行符。密钥可能包含除=换行符或 NUL  以外的任何字节。该值可能包含除换行符或 NUL 以外的任何字节。在这两种情况下,所有字节都按原样处理(即,没有引用,并且不能用新行或 NUL 传送值)。属性列表由空行或文件结束符终止。Git 了解以下属性:

protocol

证书将被使用的协议(例如,https)。

host

网络凭证的远程主机名。

path

将使用凭证的路径。例如,对于访问远程 https 存储库,这将成为服务器上存储库的路径。

username

凭证的用户名,如果我们已经有一个(例如,来自用户的 URL 或先前运行的助手)。

password

证书的密码,如果我们要求它被存储。

url

当读取这个特殊的属性时git credential,这个值被解析为一个 URL 并且被看作是它的组成部分被读取了(例如,它的url=https://example.com行为就像是protocol=httpshost=example.com被提供的一样)。这可以帮助呼叫者避免自己解析URL。请注意,URL 中缺少的任何组件(例如,上述示例中没有用户名)将被设置为空; 如果要提供 URL 并覆盖某些属性,请首先提供 URL 属性,然后再提供任何覆盖。

Article précédent: Article suivant: