为什么Github在按照屏幕上的指示并推送新的回购时询问用户名/密码?

我是github上的一个组织的所有者,只是创build了一个回购协议,并试图推动,但我遇到了一个问题,它要求我的用户名,即使我可以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。

不要使用HTTP来代替使用SSH

更改

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

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

你可以在.git/config文件中完成

我有这个相同的问题,并想知道为什么它没有发生与https克隆的bitbucket回购。 仔细观察一下,我发现BB回购的configuration有一个包含我的用户名的URL。 所以我手动编辑我的GH回购的configuration就像这样,瞧,没有更多的用户名提示。 我在Windows上。

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

更改:

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

至:

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

保存文件。 做一个git pull来testing它。

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

这是一个正式的答案 :

如果Git每次尝试与GitHub进行交互时都提示您input用户名和密码,则可能是使用HTTPS克隆URL来存储您的存储库。

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

你可以configurationGit来存储你的密码。 如果您想设置,请阅读设置密码caching的全部内容。

附加说明:

如果你已经添加了一个远程($ git remote add origin …)并且需要修改那个特定的远程程序,那么在重新添加新的改进的repo URL之前,先执行远程删除($ git remote rm origin) “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.compipe理员的电子邮件,内容如下:“我们通常build议人们使用HTTPS URL,除非他们有特定的理由使用SSH协议.HTTPS安全且易于设置,所以我们默认当创build一个新的仓库时。“

密码提示确实接受正常的github.comlogin细节。 有关如何设置密码caching的教程可以在https://help.github.com/articles/set-up-git#password-caching中find。; 我遵循教程中的步骤,并为我工作。

在@ Ianl的回答中改进,

如果你想禁用用户名和密码的提示,那么你可以设置URL如下 –

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

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

因为您正在使用HTTPS方式。 HTTPS要求您每次尝试推或拉时键入您的帐户访问权限,但也有一种方法称为SSH ,它可以让您告诉git, 我授权您使用本帐户的权限,而不会询问我再次关于任何用户访问 。 要使用它,您必须生成SSH密钥, 并将其添加到您的Github的帐户只需一次 。要做到这一点,您可以按照这些步骤

如何为Github生成SSH密钥

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

如果您启用了双因素身份validation,那么您将需要生成个人访问令牌,并使用该令牌而不是常规密码。 更多信息在这里: https : //help.github.com/articles/creating-an-access-token-for-command-line-use/