为什么在公司环境中使用 GitKraken 执行远程操作时会出现 "malformed URL" 错误?

Why do I get "malformed URL" error when performing remote actions using GitKraken in a corporate environment?

在我的公司环境中使用 GitKraken 并尝试执行远程操作(push/pull/fetch 并可能克隆)时,我收到如下所示的错误:

Fetch failed for 'origin'
malformed URL
[Proxy information]

我的存储库只能在内部访问,上面的错误消息不是正确的远程。我已经通过 git remote -v 在本地存储库上验证了正确的远程。我还证实这不是 git 问题,因为我可以通过命令行使用 git 执行所有必要的操作。

我的组织的代理自动配置 (PAC) 文件设置正确,returns DIRECT(意思是没有代理)我的遥控器。

问题:

  1. 为什么 GitKraken 在我没有配置代理的情况下使用代理?
  2. 为什么 GitKraken 对内部地址使用外部代理?
  3. 我该如何解决这个问题并能够与我的遥控器进行交互?

Why is GitKraken using a proxy when I haven't configured one?

GitKraken 会自动从您系统的代理设置中提取代理配置(Internet 选项 > 连接 > LAN 设置)。在您的情况下,您似乎已经在 "Automatic configuration" 部分配置了一个 PAC 文件。 GitKraken(或其使用的库之一)正在读取此文件并确定如何联系外部系统。

Why is GitKraken using an external proxy for internal addresses?

GitKraken(或其使用的库之一)似乎错误地采用了代理设置。当 GitKraken 启动时,它会连接到它的更新服务器。在连接之前,它确定如何通过 PAC 文件连接到它。在这种情况下,您可能使用代理进行外部互联网访问,此连接是通过您的代理发生的。当您尝试在远程执行操作时,此查找不会再次发生。它错误地重新使用内部存储库更新检查中的代理配置。

How can I resolve this and be able to interact with my remotes?

您有几个选择:

  1. 打开 GitKraken 时暂时禁用代理配置。您可以通过 Internet 选项 > 连接 > LAN 设置关闭所有代理。打开 GitKraken,等待它完全启动。重新打开代理设置。您应该能够正常执行操作。
  2. 将 GitKraken 更新服务器的代理自动配置 (PAC) 文件修改为 return DIRECT(无代理)。这将使 "trick" GitKraken 认为代理不是必需的,并且不会尝试将其用于本地流量。我建议将您的 PAC 文件配置为 return DIRECT 用于以下通配符:*://*.gitkraken.com/*

例如在FindProxyForURL函数中:if (shExpMatch(url, "*://*.gitkraken.com/*")) { return "DIRECT"; }

注意:如果您的组织有阻止直接互联网访问的防火墙,您可能需要在此处格外小心,因为这 可能 影响您访问 public 存储库的能力,例如就像 GitHub 的那些人一样。您可能需要为外部存储库保留代理并为内部存储库执行 #1 选项。

回答你的问题"why is GitKraken using a proxy when I haven't configured one?" mac 上的 GitKraken 使用全局网络配置(网络首选项 > Select 网络界面 > 单击高级...> 和 select 代理选项卡。如果您配置了 "Automatic Proxy Configuration" 或"HTTP" 或 "HTTPS" 代理设置,这就是所使用的。

如果您 select 编辑了 "Auto proxy Discovery" 或 "Automatic Proxy Configuration",那么 "Bypass proxy settings for these hosts & Domains" 通常不起作用。

我怎样才能完成这项工作? 我尝试了多种解决方案,但对我有用的解决方案如下 -

我正在使用 GitKraken 6.5.3 版。我也在代理背后工作。 GitKraken 使用全局 ~./gitconfig 文件,如果你在那里配置了代理,那么它会在没有其他配置的情况下使用它。我有特定的设置 -

[http]
    sslVerify = true
    proxy = "http://myproxy.com"
[https]
    sslVerify = false
    proxy = "https://myproxy.com"
[http "https://internalurls.com/"]
   sslVerify = false
    proxy = ""

此配置适用于 git 命令行,内部 url 已正确解析,但 GitKraken 仅使用 http 和 https 配置,而不是特定的 urls 配置。所以每次我 configure/try 连接到内部 url 时,我都会注释掉一般 http 和 https 代理的行,这对我有用。

我希望 GitKraken 将来可以让用户选择 select 代理或阅读整个 gitconfig 部分来搜索所有代理。

希望这个回答对您有所帮助。

我猜你用的是 Gitkraken,我已经修复了这个错误

转到您的本地项目 并使用命令

git remote add origin git@bitbucket.org:your/repo.git

git push -u origin master

我遇到了完全相同的问题 我使用了这两个命令 然后重新启动我的系统。

git config --global --unset http.proxy

git config --global --unset https.proxy