【问题标题】:Using a gitosis git repository with XCode 4使用带有 XCode 4 的 gitosis git 存储库
【发布时间】:2011-08-03 18:03:20
【问题描述】:

嗨 我一直在尝试从 XCode 4 访问我的 git 存储库。

使用命令行工具一切正常。我可以使用以下方法克隆我的仓库:

git clone git@example.com:somerepo.git

但在 XCode 中,尝试使用时:

ssh://git@example.com:somerepo.git

它只是一直要求我输入密码,我根本不想使用。

同样的事情发生在:

git://git@example.com:somerepo.git

除了我还收到“连接被拒绝:无法连接到套接字”错误消息。

知道如何解决这个问题吗?

【问题讨论】:

  • 您是否必须在某处配置您的公钥文件? (我不知道 xcode。)

标签: xcode git ssh xcode4 gitosis


【解决方案1】:

在 Xcode 4.2 中,以下位置字符串对我有用

ssh://git@example.com:22/somerepo.git

ssh:// 部分用于告诉 Xcode 应该使用哪个协议。由于 URL 现在包含一个方案,因此还需要端口 :22 说明符才能使 Git 满意。 没有端口,我在命令行上收到以下(奇怪的)错误消息:“ssh:连接到主机端口 22:连接被拒绝”。

顺便说一句:当我在 Organizer 窗口中添加我的存储库时,Xcode 咕哝着“需要身份验证”,然后开始旋转活动指示器。虽然我能够立即克隆 repo,但我必须重新启动 Xcode 才能摆脱活动指示器。

【讨论】:

    【解决方案2】:

    我发现使用 ssh://git@git.mydomain.com/myrepo 有效。请注意,“git”是我用于 gitolite 的用户名(完全按照他们网站上的说明,正确添加用户的公钥), git.mydomain.com 是安装 gitolite 的主机名,“myrepo”是存储库的名称(它可以在我的末尾添加“.git”)。

    另一部分是确保您的 OpenSSH 密钥位于 ~/.ssh/id_rsa(私有;将其更改为 0600 否则它将不起作用)和 ~/.ssh/id_rsa.pub(公共;我没有知道这是否需要,但我从不费心去检查)。

    以上方法一直有效,没有“副作用”,至少对我来说……

    【讨论】:

      【解决方案3】:

      XCode 4 在 ~/.ssh 目录中查找密钥对

      您需要将公钥添加到远程存储库中的用户

      然后 XCode 可以克隆存储库

      【讨论】:

        【解决方案4】:

        至少对于 Xcode 4.2,您不需要指定协议。只需使用

        git@example.com:somerepo.git
        

        由于我发现此线程具有相似的症状但存在不同的问题,因此我要补充一点,我忘记为新用户添加 gitosis 的密钥,所以我遇到了一些我认为与 Xcode 相关但实际上与gitosis 配置问题。

        【讨论】:

          【解决方案5】:

          你应该确保你没有启用任何代理,因为它有时会导致目标在 xcode 中无法访问。

          填写仓库名称后,必须检查仓库“类型”是否为git,而不是SVN,因为我发现xcode可以更改类型。

          最后你应该可以成功访问repo了。

          【讨论】:

            【解决方案6】:

            我有自己的使用 GIT-SCM 的 GIT 服务器。

            我尝试了网址ssh://user@git.mydomain.com:22/gitname.git并将私钥放入~/.ssh/user

            CHMOD 到 0600

            当我连接时,它要求我输入用户名和密码,但没有密码

            【讨论】:

            • 欢迎来到 SO Chizuoka -- 我认为您想创建一个新问题而不是现有问题的答案。
            【解决方案7】:

            通过git protocol(这是您在命令行中所做的)克隆 Git 存储库与使用 ssh+git protocol(这是您在 XCode4 中首先尝试的)不同

            如果在您的 $HOME/.ssh 目录中找不到公钥,则只有 ssh 会要求输入密码。
            如果您可以访问服务器 example.com 上的端口 9418,则不需要 ssh 进行克隆(但如果在 example.com 服务器上设置了身份验证层,则可能需要它)

            “无法连接 socke”错误是典型的防火墙/代理问题:请参阅 Git error: fatal: unable to connect a socket (Invalid argument)。

            检查您的git config -l:XCode 4 可能不使用与您的 git 在命令行中使用的完全相同的设置。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-09-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-08-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多