Magit 是使用 Github 的一个良好选择。当我想将我的提交推送到 Github 时,它总是会要求我的用户名和密码。 Emacs 怎样才能保存我的密码呢?
此致敬礼。
这与Magit并没有太大关系。如果您正确配置Git,它也可以在Magit中工作。可以使用ssh密钥或credential.helper。我推荐前者,但这也需要配置ssh-agent,而如何完成可能因分发版本而异。
这是对我有效的方法:
在项目的 git 配置文件(.git/config
)中添加一个用户名(但不要添加密码)。
查找类似于以下内容的行:
url = https://github.com/magit/magit.git
(除非是你的仓库来源而不是 magit 的)
并在网址中添加你的用户名。 在 Github 上,无论使用哪个用户名都无所谓。 只需随意编一个即可。
url = https://batman@github.com/magit/magit.git
附注 - 如果您想遵循此问题的接受答案,只需在用户名后添加密码或PAT和冒号,然后完成 url = https://batman:ghp_123456789409234532843@github.com/magit/magit.git
但如果您不想这样做(稍后解释),请继续:
将此添加到emacs配置文件中:
(add-hook 'magit-process-find-password-functions
'magit-process-password-auth-source)
因为我已经在使用tramps,并且已经保存了ssh密码,所以我已经有一个名为~/.authinfo
的文件。如果你没有,请尝试添加一个?或者尝试使用tramps看看它是否出现了?
然后在其中添加这一行。
machine github.com login batman password ghp_123456789409234532843
我猜想这个文件中虚构的登录名必须与git配置中虚构的用户名匹配。对我来说,这实际上是可行的,没有在authinfo
中添加登录信息,只需添加machine github.com password ghp_123456789409234532843
,但如果你有多个github账户和PATs,我希望添加登录信息可以每次获取正确的账户PAT。
被大多数人接受的答案https://dev59.com/voPba4cB1Zd3GeqPnROR#25675158可能是这个问题中大多数人应该做的事情。
然而,我正在使用通过tramp连接树莓派,并且树莓派处于不加密的桌子上,因此我不放心在上面留下github PAT - 这就是我通过duckduckgo搜索找到这个问题的原因。
我的开发机器是加密的。希望这样,如果有人从目标机器中取出SD卡,他们将无法使用它来攻击我的Github账户。
我需要回答的大部分内容都在https://emacs.stackexchange.com/questions/41616/how-to-save-remote-repo-credentials和https://emacs.stackexchange.com/questions/40994/using-auth-source-with-magit-and-bitbucket(还有Tarsius的帮助)中。但我仍然在这里按步骤添加了它。
magit-process-password-prompt
有一行代码(process-send-string proc (concat (read-passwd prompt) "\n"))
。你可以用自己硬编码的密码替换(read-passwd prompt)
,例如(process-send-string proc (concat "12345678" "\n"))
。通过修改函数magit-process-username-prompt
,用户名的过程也是类似的。 - lawlist~/.netrc
文件并继续使用HTTPS。 - legoscia