为什么Github要求用户名/密码时,按照屏幕上的说明,并推动一个新的回购?

我是github上一个组织的所有者,刚刚创建了一个回购并尝试推送,但我遇到了一个问题,它要求我提供我的用户名,尽管我可以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。

301258 次浏览

不要使用HTTP,而是使用SSH

改变

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

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

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

我也有同样的问题,想知道为什么用https克隆的比特桶回购没有发生。仔细研究一下,我发现BB回购的配置有一个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命令来编辑设置,但直接编辑文件似乎不是问题。

附加说明:

如果你已经添加了一个远程($git remote add origin…)并且需要更改特定的远程,然后首先执行远程删除($ git remote rm origin),然后重新添加新的和改进的回购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

我刚刚收到一封来自github.com管理员的电子邮件,内容如下:“我们通常建议人们使用HTTPS URL,除非他们有特定的理由使用SSH协议。HTTPS是安全的,更容易设置,所以当创建一个新的存储库时,我们默认使用HTTPS。

密码提示确实接受正常的github.com登录详细信息。关于如何设置密码缓存的教程可以在在这里中找到。我遵循了教程中的步骤,它对我很有效。

下面是这个的官方的回答:

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

使用HTTPS远程URL有一些优点:它比SSH更容易设置,并且通常通过严格的防火墙和代理工作。然而,它也提示您输入您的GitHub凭证每次您拉或推一个存储库。

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

因为你正在使用HTTPS的方式。HTTPS要求你每次尝试推或拉时都输入你的帐户访问权限,但也有一种方法,称为SSH,它让你告诉git, 我给你的权限与我的帐户这台电脑,永远不会再问我任何用户访问。要使用它,你必须生成SSH键和把它添加到你的Github帐户,只需一次。要做到这一点,您可以遵循以下步骤

如何生成SSH密钥的Github

如果启用了双因素身份验证,则需要生成一个个人访问令牌,并使用该令牌代替常规密码。更多信息:https://help.github.com/articles/creating-an-access-token-for-command-line-use/

改进@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

如果您使用的是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.