在github上推送代码时,为什么git没有要求我输入用户名和密码?

14

这可能是一个愚蠢的问题。但我通过搜索找不到任何关于这个的信息。也许,这是一个愚蠢的问题。

我把我的代码存储在github上。

两小时前,我想要在仓库中更新我的代码,但我的本地计算机没有那份代码。因此我克隆了代码,修改了它们,并将其推送。这时,git提示我输入github用户名和密码。我输入了它们并成功更新了代码。

之后,我读取了“OTHER”仓库中的代码。我发现还有一些需要修改的东西。所以我将该仓库克隆到我的本地计算机上,修改了代码并将其推送。

但是...这时,git没有提示我输入github用户名和密码。

这是什么意思?这是否意味着任何人都可以克隆我的github代码并将其推送到我的仓库?这是非常危险的情况,不是吗?

因此,我的问题是:

  1. 第一次推送是否在我的本地计算机中保存了github登录信息,并在其他推送后使用它?那么它在哪里?
  2. Github仓库的默认安全设置是什么?我没有向github账户注册此本地计算机的SSH密钥。似乎没有任何身份验证要求,就可以将代码推送到我的主分支的仓库。

以下是我执行上述操作时的命令。

$git init
$git clone https://github.com/[user name]/[repository name].git
<some change>
$git add *
$git commit -m "change"
$git remote add origin https://github.com/[user name]/[repository name].git
$git push origin master

添加了一些信息。 如需更多详情,请查看我的GitHub设置页面。

这里输入图片描述

这里输入图片描述

这里输入图片描述

6个回答

32
您可以通过运行以下命令手动取消设置credential.helper。
git config --global --unset credential.helper

根据您的需求使用 --global--local--system

然后在 GitHub 上推送时会要求输入用户名和密码。

如果您在 Windows 上,还有一种方法可以这样做,但请注意,如果您在 git 中使用 credential.helper,它将再次保存您的凭据。

转到 控制面板 -> 凭据管理器 -> Windows 凭据 并删除您的 git 凭据条目 / 条目。 enter image description here


不行。我将“--global”选项更改为“--local”和“--system”,但仍然没有询问。 - casamia
2
这是一个很棒的答案。它解决了当一个人有多个Git账户时的问题。 - explorer
1
我正在使用Windows。答案的第一部分没有帮助(我只尝试了--local)。第二部分,即从凭据管理器中删除条目,对我很有帮助。非常感谢。 - Saurabh Misra

5

1
啊...你的链接是正确的!我启动了OSX的钥匙链实用程序并发现我的GitHub钥匙链已经创建。当我删除这个钥匙链时,$git push origin master 命令要求我输入用户名和密码!非常感谢! - casamia
很高兴能够帮助! - Maelstrom
我走了很长的路才找到如何真正使用钥匙串实用程序,这里是一个链接,供可能有同样问题的人使用:https://help.github.com/articles/updating-credentials-from-the-osx-keychain/ - JJPandari

3

对于Mac用户,可以通过运行以下命令来清除密码:

git credential-osxkeychain erase
host=github.com
protocol=https

1
问题: 当推送到远程git时,会报告以下错误: remote: Permission to [your/repo] denied to user [bob]
存储库中的用户名可能是错误的。在PowerShell中执行以下命令:
cd c:\Program Files\Git\mingw64\libexec\git-core;

git-credential-manager.exe remove [bob];

git push origin [your branch];

现在应提示您输入凭据。

0
在Linux中进行检查
cat /home/<MyUser>/.git-credentials

-3
据我所知,使用git有几种检出代码的方式。
具体来说,可以使用http协议(需要用户名和密码)或者ssh协议(需要ssh公钥/私钥对)。
看起来你正在使用ssh协议,因此使用私钥/公钥对进行授权。

1
当他列出他的命令时,你会发现他正在使用https协议。如果您使用url中的https协议($git clone https://github.com/[用户名称]/[仓库名称].git)克隆repo或使用https$git remote add origin https://github.com/[用户名称]/[仓库名称].git)添加远程,则将使用https。如果要使用ssh,则需要在url前面使用ssh://。此外,他显示他没有向github添加任何ssh密钥。因此,即使他尝试使用ssh协议,github也无法使用ssh授权(公钥/私钥对)。 - Irmak Sirer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接