我最近将本地 Git 安装从
1.8.1
更新为 1.8.0.1
。
我注意到,当我在 GitHub 上工作时,它不再提示我在推送时输入用户名和密码。
这让我很困扰,因为我认为每次都必须输入用户名和密码作为一种很好的安全措施。 (如果别人用我的电脑怎么办?)
我检查了以下内容:
1.8.0.1
在另一台计算机上仍然要求输入用户名和密码。~/.ssh
文件夹。没有什么问题。~/.gitconfig
或单个<proj>/.git/config
文件中。~/.netrc
中存储任何与github相关的内容。我在 git 发行说明存档中找不到任何内容。
有谁知道这是否是一个新的 git 行为?如何恢复提示?
使用 git 命令添加 -v 标志。例如
git pull -v
v 代表验证。
这很可能是因为您有多个帐户,例如一个私人帐户,一个用于 GitHub 的工作帐户。
解决方案 在 Windows 上,转到“开始”>“凭据管理器”>“Windows 凭据”并删除 GitHub 凭据,然后再次尝试拉或推,系统将提示您重新登录 GitHub
解决方案 在Mac上,在终端上发出以下问题:
git remote set-url origin https://[email protected]/username/repo-name.git
在两个地方将“用户名”替换为您的 GitHub 用户名,并提供您的 GitHub 存储库名称。
或添加密码/令牌
git remote set-url origin https://username:<pass/token>@github.com/username/repo-name.git
有了
,我现在看到我有一个git config -l
选项credential.helper=osxkeychain
这意味着凭证助手(最初在 1.7.10 中引入)现已生效,并将自动缓存用于通过 HTTP 访问远程存储库的密码。
(如“GIT:有什么方法可以设置默认登录凭据?”)
您可以完全禁用该选项,或者仅针对单个存储库。
这些都不适合我。我试图从私人 git 服务器克隆一个目录,并输入了错误的凭据,然后它不允许我在后续尝试中尝试不同的凭据,它只是立即因身份验证错误而出错。
有效的方法是在 URL 中指定用户名 (
mike-wise
),如下所示:
git clone https://[email protected]/someuser/somerepo.git
由于问题标有
Github
,因此添加另一个遥控器(如 https_origin
)并添加 https
连接可以强制您始终输入密码:
git remote add https_origin https://github.com/.../...
绕过愚蠢的 github 限制的最简单方法是在您的个人资料设置中的开发人员下创建 api 令牌。然后你可以将你的repo url更改为@url
删除 ~/.gitconfig 中的这些行可以拯救我:
extraheader = Authorization: Bearer xxx
[remote "origin"]
url = https://user:[email protected]/user/repo.git
[alias]
credential-manager = credential-manager-core
[credential]
helper = osxkeychain```
解决方案很多,但有时却行不通。
就我而言,我们将用户配置文件从一个域迁移到另一个域。凭证管理器被清空了,因为,依赖于 DPAPI 的任何东西都不再存在了。
就我而言,在凭据管理器中创建通用凭据:
git:https://hostname
并且...我已通过身份验证!
对我来说,我有这样的设置:
credential.helper=manager
。 git version 2.45.0