Git:强制用户和密码提示


75

我最近将本地Git安装更新为1.8.11.8.0.1

我注意到,当我在GitHub上工作时,它不再提示我输入用户名和密码。

这让我感到困扰,因为我认为每次都必须输入用户名和密码,这是一种很好的安全措施。(如果有人使用我的计算机怎么办?)

我检查了以下内容:

  • 1.8.0.1 在另一台计算机上仍要求输入用户名和密码。
  • 我在github上的帐户仍然执行私有/安全控制。
  • 我正在使用https远程引用,而不是ssh。
  • 为了很好,我检查了一下~/.ssh。那里没事。
  • 没有将登录详细信息存储在~/.gitconfig单个<proj>/.git/config文件中。
  • 也不在中存储任何与github相关的东西~/.netrc
  • 我创建了一个新的虚拟存档:仍然不提示我登录。

我在git版本说明档案中找不到任何内容。

有人知道这是否是新的git行为吗?如何还原提示?


%HOME%\_netrc您的凭证中是否有文件?(例如在stackoverflow.com/questions/11021803/…中)还是您已激活某种凭证缓存?(例如在stackoverflow.com/questions/6191985/…中)还是在使用GitHub for Windows?
VonC

谢谢。我正在OS X上工作。我确实有一个~/.netrc文件,但是那里没有github相关的任何内容(忘了提一下,现在添加它)。git config -l现在,有了我,我有一个credential.helper=osxkeychain选择。谢谢,我将阅读联机帮助页。您能否扩大您的评论作为答案?
13年

评论扩展为答案,并带有参考链接。
VonC

5
我使用git config --global --unset credential.helpergit config --system --unset credential.helper它带回了登录提示。
yoyo

Answers:


24

使用git config -l,我现在看到我可以credential.helper=osxkeychain选择

这意味着凭证助手(最初在1.7.10中引入)现已生效,并将自动缓存用于通过HTTP访问远程存储库的密码。
(如“ GIT:是否可以设置默认登录凭据? ”中所示)

您可以完全禁用该选项,也可以仅对单个仓库禁用。


1
谢谢。我花了一段时间,因为某种原因该选项位于--system配置文件中,而不是--global一个。仍然想知道如何打开它。
tompave

您是否已安装了GitExtensions或任何其他客户端以将其打开?我不记得在安装GitExtensions之前将其打开。
RuntimeException

显然,这可能是原因。凭证缓存守护程序。尽管不确定Windows上的原因是否相同。stackoverflow.com/a/15382950/15789
RuntimeException

1
在Windows上,@ RuntimeException默认情况下,凭据帮助程序是Microsoft凭据管理器(因此,没有守护程序):stackoverflow.com/a/42152514/6309
VonC

1
谢谢,这使我走上了正确的道路。我在OS X中启动了钥匙串访问工具,并删除了那里的所有github内容……解决了这个问题。
Shai Almog

125

使用git命令添加-v标志。例如 git pull -v

v代表验证。


1
也为我工作。很奇怪在git手册页中什么都没提到。
joao cenoura

1
@joao我看到我的一位同事正在使用此命令,我很快就想起来了。也从未在任何地方看到此文件。它看起来更像是--verbose标志,不确定为什么会起作用:)
sapy 2016年

是的。它也引起了我的注意,看起来像是冗长的或版本的...但是实际上它代表verify。Git具有奇怪的命名法。
Sapy

5
git版本1.7.1手册页显示了-v代表git-pulland的详细说明git-fetch
peter

7
绝对没有为我做任何事情。没有提示任何东西。刚推。
魔鬼的拥护者

66

这很可能是因为您有多个帐户,例如一个私有帐户,一个用于GitHub的帐户。

解决方案在Windows上,转到“开始”>“凭据管理器”>“ Windows凭据”并删除GitHub凭据,然后尝试再次拉入或推送,系统将提示您重新登录到GitHub。

解决方案OnMac,在终端上发出以下命令:

git remote set-url origin https://username@github.com/username/repo-name.git

在两个地方都用您的GitHub用户名替换“用户名”,并提供您的GitHub存储库名称。


1
这就是我一直在寻找的东西。
哈菲兹·西迪克

2
大!非常感谢
Codiee

11

这些都不对我有用。我试图从私有git服务器克隆一个目录,并输入我的凭据为false,然后它不允许我在以后的尝试中尝试其他凭据,它只是立即由于身份验证错误而出错。

这样做是mike-wise在URL中指定用户名(),如下所示:

   git clone https://mike-wise@collab.somewhere.net/someuser/somerepo.git

1
这对我来说有所不同(我位于一台不允许访问凭据管理器的受管计算机上)
Malcolm Anderson

5

由于问题标有Github,因此添加另一个远程对象(例如)https_origin并添加https连接可能会迫使您始终输入密码:

git remote add https_origin https://github.com/.../...

1
这对我不起作用。我可以添加https遥控器,但是它仍然显示“ permisson拒绝给<myusername>”,而没有提示我。
LondonRob

1

除第三个答案外:如果您使用的是非英语Windows,则可以通过“控制面板”>“用户帐户”>“凭据管理器”中的“凭据管理器”图标找到“凭据管理器”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.