350

我是 github 上一个组织的所有者,刚刚创建了一个 repo 并尝试推送,但我遇到了一个问题,它要求我输入用户名,即使我可以 SSH 很好:

$ ssh -T git@github.com
Hi Celc! You've successfully authenticated, but GitHub does not provide shell access.
$ git add .
$ git commit -m 'first commit'
[master (root-commit) 3f1b963] first commit
 6 files changed, 59 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 main.js
 create mode 100644 package.json
 create mode 100644 readme.markdown
 create mode 100644 views/index.ejs
 create mode 100644 views/layout.ejs
$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git push -u origin master
Username for 'https://github.com':

我究竟做错了什么?这在我之前从未发生过,但我最近也升级到了 git 1.7.10.3。

4

9 回答 9

747

不要使用 HTTP 而是使用 SSH

改变

https://github.com/WEMP/project-slideshow.git 

git@github.com:WEMP/project-slideshow.git

你可以在.git/config文件中做

于 2012-06-06T06:41:10.013 回答
61

我遇到了同样的问题,想知道为什么用 https 克隆的 bitbucket 存储库没有发生这种情况。稍微研究了一下,我发现 BB repo 的配置有一个包含我的用户名的 URL。所以我像这样手动编辑了我的 GH 存储库的配置,瞧,没有更多的用户名提示。我在 Windows 上。

编辑your_repo_dir/.git/config(记住:.git文件夹是隐藏的)

改变:

https://github.com/WEMP/project-slideshow.git

到:

https://*username*@github.com/WEMP/project-slideshow.git

保存文件。做一个git pull测试它。

这样做的正确方法可能是使用 git bash 命令来编辑设置,但直接编辑文件似乎没有问题。

于 2013-02-28T19:16:18.237 回答
33

以下是对此的官方回答

如果每次您尝试与 GitHub 交互时,Git 都会提示您输入用户名和密码,那么您可能正在为您的存储库使用 HTTPS 克隆 URL。

使用HTTPS 远程 URL有一些优点:它比 SSH 更容易设置,并且通常可以通过严格的防火墙和代理工作。但是,它还会在每次拉取或推送存储库时提示您输入 GitHub 凭据。

您可以配置 Git 为您存储密码。如果您想进行设置,请阅读有关设置密码缓存的所有内容。

于 2014-04-01T14:40:20.233 回答
19

改进@Ianl 的回答

似乎如果启用了两步验证,您必须使用令牌而不是密码。您可以在此处生成令牌。

如果要禁用用户名和密码的提示,则可以按如下方式设置 URL -

git remote set-url origin https://username:password@github.com/WEMP/project-slideshow.git

请注意,该 URL 包含用户名和密码。该.git/config文件还应显示您当前的设置。


更新 20200128:

如果您不想将密码存储在配置文件中,那么您可以生成您的个人令牌并将密码替换为令牌。这里有一些细节

它看起来像这样 -

git remote set-url origin https://username:token@github.com/WEMP/project-slideshow.git
于 2017-04-04T19:44:21.370 回答
15

附加说明:

如果您已经添加了一个远程 ($git remote add origin ... ) 并且需要更改该特定远程然后执行远程删除 ($ git remote rm origin),然后重新添加新的和改进的 repo URL (其中“origin”是远程仓库的名称)。

所以要使用原始示例:

$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git remote rm origin
$ git remote add origin https://github-username@github.com/WEMP/project-slideshow.git
于 2013-03-04T21:40:10.483 回答
9

如果您使用的是 HTTPS,请检查以确保您的 URL 正确。例如:

$ git clone https://github.com/wellle/targets.git
Cloning into 'targets'...
Username for 'https://github.com': ^C

$ git clone https://github.com/wellle/targets.vim.git
Cloning into 'targets.vim'...
remote: Counting objects: 2182, done.
remote: Total 2182 (delta 0), reused 0 (delta 0), pack-reused 2182
Receiving objects: 100% (2182/2182), 595.77 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1044/1044), done.
于 2017-05-19T20:47:58.173 回答
6

我刚刚收到一封来自 github.com 管理员的电子邮件,内容如下:“我们通常建议人们使用 HTTPS URL,除非他们有特定原因使用 SSH 协议。HTTPS 安全且易于设置,因此创建新存储库时,我们默认为该设置。”

密码提示确实接受正常的 github.com 登录详细信息。可以在此处找到有关如何设置密码缓存的教程。我按照教程中的步骤操作,它对我有用。

于 2013-07-02T20:34:33.317 回答
5

因为您使用的是HTTPS方式。HTTPS要求您每次尝试推送或拉取时都输入您的帐户访问权限,但也有一种方法,称为SSH,它可以让您告诉 git,我允许您使用我的帐户访问这台电脑,并且从不询问我再次关于任何用户访问。要使用它,您必须生成 SSH密钥并将其添加到您的 Github 帐户中一次。为此,您可以按照以下步骤操作

如何为 Github 生成 SSH 密钥

于 2016-04-28T21:31:19.870 回答
5

如果您启用了两因素身份验证,那么您需要生成个人访问令牌并使用它来代替您的常规密码。更多信息在这里:https ://help.github.com/articles/creating-an-access-token-for-command-line-use/

于 2016-08-09T01:03:03.923 回答