6

我正在尝试使用 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 设置中,它只选择了我想保留的 openSSH,因为 putty 似乎更麻烦。

我在 gitextensions 中添加的远程地址,实际上我从 bash 中做的唯一一件事就是测试上面的命令并生成 SSH 密钥。其他一切都在 git 扩展中设置。所以我想一切都必须正确设置。例如,电子邮件地址和姓名是正确的...

ssh git@github.com

连接也很好,来自 bash

编辑

因此,我可以通过将来自 git-extensions 的命令放入 cmd 来重现该错误。显然,从 git bash 和从 cmd 运行和 git-extensions 运行这个命令就像 Windows 命令一样......有什么线索吗?

更新:如果我从 git-extensions 的菜单中选择 git-bash,我会得到一个与我在我的 repo 文件夹中右键单击资源管理器并在此处选择 git bash 时完全相同的窗口。现在,在从资源管理器打开的那个中,我可以推送,在从扩展打开的那个中,我遇到了公钥问题。

4

7 回答 7

6

要检查的事项:

  1. HOME环境变量的存在。
  2. 那里存在%HOME%\.ssh\RSA 密钥。

当您从命令 promt 运行 git 时,最好使用 run git.cmd,因为它会HOME自动修复:

@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%

要修复 gitextensions,请定义HOME变量并将其设置为与USERPROFILE

于 2010-11-06T11:36:22.360 回答
6

好的,我解决了。

我从 git 扩展中打开了 git bash,并使用 explorer shell 扩展打开了 git bash。然后我从两者运行 ssh -vvv git@github.com 来查看差异。

事实证明,因为我更改了 git 配置文件的位置(我倾向于不时重新格式化,所以 c:\documents and settings... 是出了名的不利于存储我可能想要持久保存的任何内容),运行时来自 git extensions 的 git 也在其他位置寻找 ssh 密钥。所以我添加了我的 git cofig 文件所在的 .ssh 文件夹,现在它可以正常工作了。我认为 git-extensions 将 git 的 HOME 变量设置为您设置为配置文件路径的任何内容。

现在,这并不明显......

于 2010-11-06T12:15:44.797 回答
2

正确的答案是来自“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 中进行此手动更改。

于 2012-10-03T13:16:09.073 回答
1

当您直接启动 git bash 时,您将进入 MSYS 的主文件夹。您需要确保在 .ssh 子文件夹(相对于主文件夹)中有 ssh 密钥(id_rsa ?)。

于 2010-11-06T11:32:09.610 回答
1

很高兴你解决了这个问题。因为这听起来像是一个严重的问题,所以我对从 GitExtensions 开始时 git-bash 之间的区别很感兴趣。在 GitExtensions 中有一个设置可以解决这个问题。%HOME% 目录可以在 GitExtensios 中更改。默认情况下,它将设置为 %HOMEDRIVE%%HOMEPATH%,但您可以覆盖它。更改此设置可能会解决您的问题,因为您认为这是问题所在。要更改此设置,请打开设置对话框并转到选项卡“git”。在“环境”部分中,您可以设置 %HOME% 路径。

如果您让我知道这是否也解决了问题,我将不胜感激。我也对最初造成这种情况的原因感兴趣。也许我可以改进对有效 HOME 目录的检查。

于 2010-11-06T15:39:40.757 回答
1

是的,不设置 HOME 变量也是我的问题。

将 HOME 变量设置为%USERPROFILE%并重新生成私钥和公钥,然后尝试克隆——它现在应该可以工作了。

于 2016-05-05T01:14:43.753 回答
-1

我看到 HOME 变量在 git 扩展中设置为 USERPROFILE。我可以添加和提交,但不能从远程存储库推/拉。我无法连接到任何远程存储库。我们使用 http(不是 ssh)进行连接。但是,使用 git bash 我可以连接到遥控器并进行推/拉。我提出了我的问题GIT extensions does not connect to remote 但 git bash 确实并被定向到了这个问题。但是,我无法解决我的问题。有任何想法吗?

于 2012-09-11T19:15:52.753 回答