我试图使用git扩展,我真的很喜欢它,但我没有设法推到github。 以下命令在git bash中正常工作:
git push "origin" master:master
然后当我用git扩展推送时,我得到这个:
C:\Program Files\Git\bin\git.exe push "origin" master:master Permission denied (publickey). fatal: The remote end hung up unexpectedly Done
在git设置中,它只是select了openSSH,我想保留,因为腻子似乎更麻烦。
我已经在gitextensions中添加了远程地址,实际上我只是为了testing而从bash中完成的唯一的事情就是上面的命令,并且通过SSH密钥。 所有其他的都在git扩展中设置。 所以我想所有的东西都必须正确设置。 例如,电子邮件地址和名称是正确的…
ssh git@github.com
也连接好,从bash
编辑 :
所以我可以通过从cmd中的git扩展命令重现错误。 显然,从git bash和从cmd运行有区别,git-extensions运行这个命令就像一个Windows命令…任何线索?
更新 :如果我从git-extensions的菜单中selectgit-bash,我会得到一个与我在右键单击资源pipe理器的repo文件夹时一模一样的窗口,然后在这里selectgit bash。 现在,在从资源pipe理器打开的那个,我可以推,在从扩展打开的那个我得到的公钥问题。
需要检查的内容:
HOME
环境变量的存在。 %HOME%\.ssh\
和RSA键。 当你从命令Promt运行git时,首选运行git.cmd
,因为它自动修复了HOME
:
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH% @if not exist "%HOME%" @set HOME=%USERPROFILE%
要修复gitextensions,请定义HOME
变量并将其设置为与USERPROFILE
相同的值
好的,我解决了。
我从git扩展中打开git bash,使用explorer外壳扩展打开git bash。 然后我运行ssh -vvv git@github.com查看差异。
事实证明,因为我改变了git配置文件的位置(我倾向于重新格式化,所以c:\文件和设置…是非常糟糕的存储任何东西,我可能想保持持久性),运行时从git扩展git也寻找在不同的位置ssh密钥。 所以我添加了我的git cofig文件的.ssh文件夹,现在它工作正常。 我认为git-extensions为git设置了HOME变量,无论你设置为配置文件的路径。
现在,这并不明显…
正确的答案是来自'max'(手动设置你的HOME env var)的答案,但它可能有助于理解问题发生的原因(因为Git在世界范围内获得更多用户将会非常普遍)。
Cygwin将$ HOME设置为/ home / yourname,但该变量在Windows环境中是未知的。 所以如果你打开一个bash窗口并执行env | grep HOME你会看到这里提到的所有三个'HOME'变量,你可能会想知道为什么Gitextensions不使用你正确的cygwin HOME – 这是因为它的.bat文件调用没有看到它 – 它只能看到你所看到的从在Windows控制台做“设置”。
这是神秘的,为什么它不做这个评价后,得到正确的cygwin路径,因为它知道如何调用bash,但(至少在2.41版本),你必须做手动更改设置或.gitconfig。
当你直接启动git bash时,你将会登陆MSYS的home文件夹。 您需要确保在.ssh子文件夹(相对于主文件夹)中有您的ssh密钥(id_rsa?)。
很高兴你解决了这个问题。 由于这听起来像是一个严重的问题,我对从GitExtensions开始的git-bash感兴趣。 在GitExtensions中有一个可以解决这个问题的设置。 %HOME%目录可以在GitExtensios中更改。 默认情况下,它将被设置为%HOMEDRIVE %% HOMEPATH%,但是你可以覆盖它。 改变这可能解决你的问题,因为你建议这是问题。 要改变这个打开设置对话框并转到标签“git”。 在“环境”一节中,您可以设置%HOME%路径。
如果你让我知道,如果这也解决了问题,我将不胜感激。 我也有兴趣是什么造成了这一点。 也许我可以改善检查一个有效的HOME目录。
是的,没有设置首页变化是我的问题。
将HOME变量设置为%USERPROFILE%
并重新生成私钥和公钥,然后尝试克隆 – 现在应该可以工作。
我发现HOME变量在git扩展中设置为USERPROFILE。 我可以添加和提交,但不能从远程仓库推/拉。 我无法连接到任何远程存储库。 我们使用http(而不是ssh)进行连接。 但是,使用git bash我能够连接到远程并执行推/拉。 我已经把我的问题GIT扩展不连接到远程,但混帐bash做 ,并针对这个问题。 但是,我无法解决我的问题。 有任何想法吗?