遵循屏幕上的说明并推送新的存储库时,为什么Github要求输入用户名/密码?


298

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

Answers:


662

不要使用HTTP而是使用SSH

更改

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

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

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


1
谢谢!在阅读stackoverflow.com/a/10126412/29347之后,我才发现这一点,我认为github通常不会给我一个像HTTPS这样的远程仓库,这会引起一些混乱。
Kit Sunde 2012年

2
您可以通过单击复制克隆URL的按钮来更改此选项。
德里克·阿黛尔

对于MacOS。升级到最新的macOS时出现的问题。stackoverflow.com/a/39616339/1445102
1Rhino

12
您也可以git remote set-url origin git@github.com:user/repo.git按照stackoverflow.com/questions/10126381/…中的说明进行操作
最后是

54

我遇到了同样的问题,想知道为什么用https克隆的bitbucket存储库不会发生这种情况。仔细研究一下,我发现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命令来编辑设置,但是直接编辑文件似乎没有问题。


很好,如果您包含用户名,它将由操作系统钥匙串处理(至少在OSX中,显然在Windows中也应如此)。使用记事本或使用vim / emacs / nano / vi编辑文件之间没有什么区别,我不必担心技术方面的麻烦,无论如何它只是纯文本文件。
Kit Sunde

20

这是对此的官方答案

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

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

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


1
谢谢。我会与Github争辩说,如果您到这里结束,设置起来并不容易(:
ecoologic

这是一个问题的答案,因为这个问题问为什么
eli

14

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

这样安全吗?有人可以从我的计算机访问此信息吗?
Akaisteph19年

是的,由于它们以纯文本.git/config格式存储在文件中,因此可以从您的计算机进行访问
kaushal

11

附加说明:

如果您已经添加了一个远程($ git remote add origin ...),并且需要更改该特定的远程,则在重新添加新的和改进的回购URL(其中“起源”是远程仓库的名称。

因此,使用原始示例:

$ 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
您不必删除遥控器。您可以更改URL:git remote set-url origin https://github-username@github.com/WEMP/project-slideshow.git
shovavnik 2013年

8

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

1
太好了!如果URL中有错字,系统将提示您输入“用户名”,而不是告知存储库不存在。
dmitrii

5

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

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



4

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

如何为Github生成SSH密钥


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.