似乎无法使用 magit 将代码推送到 GitHub

6

我正在尝试使用Emacs 24.3.1上的Magit将更改推送到GitHub存储库。请注意,我在Windows系统上。

我已经暂存和提交了一个文件的更改,M-x magit-status只反映出我的克隆库中未跟踪的文件。

为了进行推送,在Magit状态缓冲区中,我执行PP命令,得到的消息是:

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':

我使用git config设置了user.name,但是显然这并没有阻止git在命令行提示我输入用户名。

你有什么想法?我该如何让Magit进行推送?


尝试更改远程使用ssh而不是https。此外,*Messages*缓冲区中是否有任何内容? - Justin Wood
*Messages* 缓冲区中没有任何内容。将尝试 ssh - PatternMatching
当我切换到 ssh://github.com/Username/emacs.d.git 时,在 *magit-process* 缓冲区中出现了 Permission denied (publickey)。请注意,我也从命令行收到了相同的消息。 - PatternMatching
2
最简单的解决方案是创建/添加一个公钥到您的Github用户。 - Justin Wood
2个回答

6

user.name仅用于提交作者身份的标识,并不用于身份验证。鉴于没有此类功能记录文档,我想知道您是如何得出这个想法的。

身份验证的用户名必须通过git凭据显式设置。对于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的身份验证代理,您只需将密钥一次性添加到代理后就可以推送代码而无需进一步输入密码。

您还可以在不同的系统中使用不同的密钥,并独立吊销每个密钥和您的Github账户密码。此外,SSH密钥不能用于登录Github本身,因此即使您的密钥丢失,您的Github账户仍然基本安全。总之,在可能会丢失或被盗的系统上,特别是笔记本电脑上,SSH密钥更安全。


谢谢!顺便问一下,MsysGit和MsysSSH是在Windows上使用SSH进行git操作的最佳方式吗? - PatternMatching
@PatternMatching 很抱歉,我不知道。 我原本以为在Windows上使用Git可以使用Putty,这可能是Windows上最好的SSH客户端,但我从未真正在Windows上使用过Git本身(或Emacs)。 那是我很久以前工作在Windows系统上的事情了,当时我使用的是Git扩展,后来短暂地使用了SourceTree。 - user355252

2

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