我正在尝试使用Emacs 24.3.1上的Magit推送到GitHub存储库。请注意,我在Windows机器上。
我已经暂存并提交了对文件的更改,M-x magit-status仅反映了我的repo克隆中驻留的未跟踪文件。
要从Magit状态缓冲区推送P P
,我收到的消息是:
Running c:/Program Files (x86)/Git/bin/git.exe push -v origin master
它似乎挂在这里,没有明显的进一步活动。当我从命令行推送时,一切似乎都很好,我被提示输入我的GitHub用户名:
PS H:\.emacs.d> git push -v origin master
Pushing to https://github.com/Username/emacs.d
Username for 'https://github.com':
我已使用user.name
设置git config
,但显然这并不妨碍git在命令行提示我输入用户名。
我在这里出错的任何想法以及我如何让Magit推进?
答案 0 :(得分:6)
user.name
仅用于提交的作者,而不用于身份验证。我想知道你是如何得到这个想法的,因为没有记录这样的特征。
必须通过git-credentials明确设置身份验证的用户名。如果是Github,请将以下内容添加到您的Git配置中:
[credential "https://github.com"]
username = johndoe
显然,johndoe
替换为您的真实用户名。
我建议您使用SSH。生成SSH密钥对,将公钥添加到Github,并使用git@github.com:johndoe/myrepo.git
而不是https://github.com/johndoe/myrepo.git
作为远程。与Putty的auth代理一起,在将密钥添加到代理后,您将能够在没有任何进一步密码提示的情况下进行推送。
您还可以为不同的系统使用不同的密钥,并从其他密钥和Github密码中独立撤销每个密钥。此外,SSH密钥不能用于登录Github本身,因此即使您的密钥丢失,您的Github帐户仍然是最安全的。总而言之,SSH密钥更安全,特别是在有丢失或被盗风险的系统上,例如笔记本电脑。
答案 1 :(得分:1)
快速修复:
(setenv "GIT_ASKPASS" "git-gui--askpass")
请检查:https://github.com/magit/magit/wiki/FAQ#windows-cannot-push-via-https