为什么Github在按照屏幕上的说明并推送新的回购时要求输入用户名/密码?

时间:2012-06-06 06:33:17

标签: git github

我是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。

9 个答案:

答案 0 :(得分:568)

请勿使用HTTP代替

更改

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

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

您可以在.git/config档案

中执行此操作

答案 1 :(得分:49)

我有同样的问题,并想知道为什么用一个用https克隆的bitbucket repo没有发生。稍微调查一下,我发现BB repo的配置有一个包含我的用户名的URL。所以我手动编辑了GH repo的配置,就像这样,瞧,没有更多的用户名提示。我在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命令编辑设置,但直接编辑文件似乎不是问题。

答案 2 :(得分:18)

以下是official answer

  

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

     

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

     

您可以配置Git为您存储密码。如果您想对此进行设置,请阅读有关setting up password caching

的所有信息

答案 3 :(得分:10)

附加说明:

如果你已经添加了一个遥控器($ git remote add origin ...)并且需要更改那个特定的遥控器,那么在重新添加新的和改进的repo之前先做一个远程删除($ 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

答案 4 :(得分:9)

改进@ Ianl的answer

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

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

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

答案 5 :(得分:6)

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

密码提示确实接受了正常的github.com登录详细信息。有关如何设置密码缓存的教程可以在https://help.github.com/articles/set-up-git#password-caching找到。我按照教程中的步骤操作,它对我有用。

答案 6 :(得分:4)

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

答案 7 :(得分:4)

如果您使用的是HTTPS,请检查以确保您的网址正确无误。例如:

$ 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.

答案 8 :(得分:2)

因为您使用 HTTPS 方式。 HTTPS 要求您每次尝试推或拉时键入帐户访问权限,但那里也是一种方式,称为 SSH ,它可以让你告诉git,我通过我的帐户授予你这台电脑的权限,从不再问我任何用户访问权限。要使用它,您必须生成SSH 键并一次将其添加到您的Github帐户。为此,您可以按照以下步骤进行操作

How To Generate SSH key for Github