无法向 Github 仓库推送

23

我的仓库:https://shadyabhi@github.com/shadyabhi/learnajax.git

shadyabhi@archlinux-N210 ~/github/learnajax $ cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = https://shadyabhi@github.com/shadyabhi/learnajax.git
    fetch = +refs/heads/*:refs/remotes/origin/*
shadyabhi@archlinux-N210 ~/github/learnajax $ git config -l
user.name=shadyabhi
user.email=abhijeet.1989@gmail.com
merge.tool=vimdiff
github.token=1095de7027bVVVV01cfAAAAAa5fc8f6
color.ui=auto
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://shadyabhi@github.com/shadyabhi/learnajax.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
shadyabhi@archlinux-N210 ~/github/learnajax $ git push -u origin master
Password: 
fatal: Authentication failed
shadyabhi@archlinux-N210 ~/github/learnajax $ 

现在,我无法将代码推送到我的代码库中。我已经检查了Github Token,它与我的账户设置中的一样。当然,我输入了正确的密码,但是我收到了这个错误信息。


你尝试过使用SSH密钥吗? - robert
我在我的地方把它屏蔽了。 - shadyabhi
7个回答

74

那就对了。显然,一旦启用了双因素身份验证,它就不再允许基于密钥的身份验证(我想这是有道理的,因为它只有一个因素)。 - Christian Bongiorno
4
如果不太清楚的话,这里生成的令牌需要代替您的密码使用。 - seato
1
我已经获得了访问令牌,现在该怎么办? - Marian07
1
@Marian07:我知道我回复晚了,但如果你还没有找到答案,你需要提供个人访问令牌来代替你的密码。例如,如果你从命令行执行“git push origin master”,当被要求输入GitHub密码时,你需要提供生成的个人访问令牌。 - Jeff Nyman

10

如果用户名包含“一些”特殊字符,则在使用https时会出现问题。


请使用mypass2011^@作为您的密码,您会发现您无法推送。 - shadyabhi
你联系过GitHub了吗?看起来这个bug还在。 - Ark-kun
4
我最近把Github账户密码改成包含“.”和“!”字符,然后就不能使用https身份验证了。这很愚蠢。 - Jen
在我的情况下,用户名是错误的。只有第一个字母是大写的,而不是小写的。 - pallavi

6
据我所知,github.token(和github.user)不被git HTTP传输使用 - 它们仅供其他使用GitHub API的工具使用,例如GitX和GitNub
我认为“身份验证失败”错误一定是由于您输入了错误的密码。(这应该是您的GitHub密码,而不是您的SSH私钥密码。)

我刚刚发现,如果你的密码是“mypass2011^@:”,我无法使用https进行git push。听起来很奇怪,但有人可以确认吗? - shadyabhi
我曾遇到相似的问题;我没有意识到使用SSH密码无法用于HTTPS(虽然事后看来这是显而易见的)。感谢您的澄清! - Nicholas Cloud

6

我刚遇到了同样的问题。 显然,当您在命令行中使用git时,它要求您输入访问令牌而不是密码。 这真的很奇怪,但它可以工作。

$ git push origin HEAD
Username for 'https://github.com':        <--- your username here
Password for 'https://t7ko@github.com':   <--- access token here O_O

PS:这是创建令牌的说明:https://help.github.com/articles/creating-an-access-token-for-command-line-use


2

我曾遇到和之前描述的相同问题。无论我尝试什么方法,都无法使用带有#¤"的密码。

这似乎与Microsoft Office 365门户网站上的问题类似,如果您还要使用移动设备,则不能在密码中使用¤字符。

在Web上,Github登录可以使用任何密码,但是在使用任何客户端时却不行。


1
如果您的用户名或密码包含特殊字符,可以使用编码替换它。例如,如果您的密码是"test@2010",您需要将其写为"test%402010",然后配置命令将会像这样: git config remote.origin.url https://{username}:test%402010@github.com/{repo_username}/{repo_name}.git

1
如果您的密码包含特殊字符,在终端中使用git push将无法正常工作。我的解决方法是打开emacs并在eshell中执行git push

你有没有想法为什么这样? - shadyabhi
对我来说失败了 :( 但感谢您让我知道eshell的存在! - Yair Daon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接