─[$] cat ~/.gitconfig
[user]
name = Shirish Agarwal
email = [email protected]
[core]
editor = leafpad
excludesfiles = /home/shirish/.gitignore
gitproxy = \"ssh\" for gitorious.org
[merge]
tool = meld
[push]
default = simple
[color]
ui = true
status = auto
branch = auto
现在我想将我的 git 凭据放入 github、gitlab 和 gitorious,这样每次我就不必在浏览器上查找凭据。如何做到这一点才能自动化?
我正在运行 zsh
答案1
使用SSH
处理 git 身份验证的常见方法是将其委托给 SSH。通常,您在远程存储库中设置 SSH 公钥(例如 在 GitHub 上),然后每当需要进行身份验证时都可以使用它。当然,您可以使用密钥代理,由桌面环境处理或使用 和 手动ssh-agent
处理ssh-add
。
为了避免指定用户名,您也可以在 SSH 中进行配置,在~/.ssh/config
;例如我有
Host git.opendaylight.org
User skitt
然后我可以使用克隆
git clone ssh://git.opendaylight.org:29418/aaa
(注意那里没有用户名)。
使用gitcredentials
如果 SSH 方法不适用(例如你正在使用通过 HTTPS 访问的存储库),git 确实有自己的处理凭据的方式,使用gitcredentials
(并且通常git-credential-store
)。您使用指定您的用户名
git config credential.${remote}.username yourusername
和凭证助手使用
git config credential.helper store
(指定--global
您是否想在任何地方使用此设置)。
然后,当您第一次访问存储库时,git 将询问您的密码,并将其存储(默认情况下~/.git-credentials
)。后续访问存储库将使用存储的密码,而不是询问您。
警告:这确实会将您的凭据纯文本存储在您的主目录中。因此,除非您了解这意味着什么并且对风险感到满意,否则这是不可取的。
答案2
对于那些后来发现这一点的人——我在这方面遇到了困难,但最终成功了
https/credentials.helper/Ubuntu
- 全局取消设置:
git config --global --unset credentials.helper
- 本地取消设置:(在每个存储库中)
git config --unset credential.helper
为每个存储库创建凭证文件:(在每个存储库内)
git config credential.helper 'store --file ~/.git_reponame_credentials'
并不是说这是最好的方法或唯一的方法 - 但在几个令人沮丧的小时后它对我有用。
答案3
您很可能在 github 中拥有另一个包含这些 SSH 密钥的帐户。如果是这样的话:
- 从 github 注销
- 使用另一个帐户登录
- 删除 SSH 密钥
- 从 github 注销
- 使用您想要的用户登录
- 将 SSH 密钥分配给所需的用户
- 再次尝试 git 命令,例如“git push”