【问题标题】:In Xcode 4 how do I add a remote GitHub repository to an existing local project?在 Xcode 4 中,如何将远程 GitHub 存储库添加到现有的本地项目?
【发布时间】:2011-08-13 19:27:05
【问题描述】:

Xcode 4 中的 Git 集成非常受欢迎,但是在处理远程存储库时它似乎有点不稳定。 为清楚起见,我使用的是 OS X 版本 10.6.7 和 Xcode 4.0.2 (4A2002a)。

如果我创建一个新的 Xcode 4 项目并接受创建本地 Git 存储库的选项,那么一切都很好。我可以在本地提交,这很棒。

当我想将新项目推送到 GitHub 时,我想添加一个远程存储库并将我的本地更改推送到 GitHub。我可以在“管理器”窗口中将 GitHub 存储库作为新存储库添加到 Xcode 4,但无法将其设置为现有项目的远程存储库。

所以我切换到在终端中使用 git 命令。

git remote add origin https://<username>@github.com/<organization>/<repository>.git

如果我再回到 Xcode 4 并尝试使用

文件 -> 源代码管理 -> 推送...

然后选择要将更改推送到的存储库。 对话框出现,列出了 origin 远程存储库。有一个黄色指示器表示需要身份验证,这很好,因为我还无法为 HTTPS 输入我的凭据。 但是,当我单击“推送”并尝试推送更改时,它会显示“无法执行操作,因为拒绝访问存储库 'origin'。”

然后会出现一个提示我输入用户名和密码的对话框,其中包含我预先填写的信息,因此它必须从本地存储库的配置中正确读取。

当我输入密码时,Xcode 4 崩溃并出现以下错误

ASSERTION FAILURE in /SourceCache/IDEKit/IDEKit-303/Framework/Classes/SourceControl/IDESourceControlOperationInfo.m:59
Details:  Message sent to invalidated object: <IDESourceControlPushOperationInfo, 0x200bd2a80>. Backtrace for invalidation:
 (null)
Object:   <IDESourceControlPushOperationInfo: 0x200bd2a80>
Method:   -invalidate
Thread:   <NSThread: 0x200020700>{name = (null), num = 1}
Hints:   None

如果我重新启动 Xcode,一个 origin 存储库已添加到 Organizer 的存储库浏览器中,我可以在 GitHub 上看到主分支,因此我知道凭据是正确的,而无需我进行任何更改。

有没有人找到一种可靠的方式来使用 Xcode 4 和 GitHub,首先从本地项目开始?

如果我克隆一个包含 Xcode 项目的现有 GitHub 存储库,使用 Xcode 4 打开它,那么即使第一次推送似乎失败了,第二次推送也确实有效。所以也许从头开始用 Xcode 4 为我创建存储库并不是最好的模式(直到他们在更高版本的 Xcode 4 中改进了 Git 工具)。

编辑一个解决方法的更多细节

此示例仅适用于您添加到 GitHub 存储库的第一个项目。因此,我认为您最好执行以下步骤,请记住,此解决方案中似乎仍然存在一些 Xcode 的“陷阱”。

  1. 列表项
  2. “欢迎使用 Xcode”对话框中的“连接到存储库”。
  3. 使用 GitHub SSH URL 作为位置
  4. 为其命名 (RepositoryName) 并克隆到目录
  5. 第一次尝试似乎失败,即使内容已下载
  6. 再试一次就可以了。
  7. 现在“管理器”窗口中定义了一个新的存储库,其来源设置为 GitHub 远程 SSH URL。
  8. 在您刚刚克隆到的目录中创建一个新项目,但不要勾选“为此项目创建本地 git 存储库”选项。
  9. 对本地 Git 存储库进行初始提交。
  10. 尝试源代码控制 -> 推送和 Xcode 4 失败,并显示“无法执行操作,因为对存储库 RepositoryName 的访问被拒绝。检查用户名和密码'
  11. 尝试源代码控制 -> Push 和 Xcode 4 再次弹出远程存储库对话框,但这次检测到一个名为 origin 的远程存储库。旁边有一个黄色球和“需要身份验证”。
  12. 再次单击“推送”会导致远程推送工作。

我发现但尚未设法解决的一件事是,即使推送成功,从 GitHub 返回的带有签入哈希值的响应消息和任何消息似乎都在 Xcode 日志导航器中报告为推送失败就 GitHub 而言。

其他人有更好的解决方案吗?

【问题讨论】:

  • 感谢分享您的解决方法!

标签: git github xcode4 push


【解决方案1】:

我想我找到了将现有项目推送到 GitHub 或任何其他远程存储库的 Xcode 方法!

前提条件

  • 我假设您有一个由 Xcode 4 创建的项目带有本地 git 存储库。
  • 您创建了一个空的远程 git 存储库(在以下示例中我将其称为 RemoteRepository

推送到远程

  1. 在 Xcode 中打开 Organizer 并转到 Repositories 选项卡

  2. 首先点击遥控器,然后点击“添加遥控器”

  3. 输入一个远程名称和你的远程存储库的位置,然后点击创建

  4. 然后选择你的项目并打开File -&gt; Source Control -&gt; Push ...

  5. 选择您的远程存储库并等待它可以连接!在括号中查找 Create

  6. 现在您的旧项目已发布到 GitHub

我希望它也对你有用!就我而言,它适用于每个远程 git 存储库

如果有不清楚的地方或用不好的英文写的,请通过twitter与我联系!

【讨论】:

  • 谢谢,这是我已有项目以来唯一对我有用的解决方案。
  • @Tim Krueger:嗨,Tim,tahnx 为您的澄清:),我想知道在我们开发它时,ai 是否可以在 GitHub 上发布我的项目,以便团队成员可以看到 only,所以让 GitHub 成为我团队的共享空间。提前感谢
  • @Luca 您的评论是个问题吗?当然这是可能的。但是你必须为 GitHub 上的私有仓库付费!
  • 为什么不改用 BitBucket?它支持 Git。
  • @TeofiloIsraelVizcainoRodrig 问题不在于存储库提供商!我的描述也应该适用于 BitBucket。
【解决方案2】:

我已经使用 ssh 连接(看起来像 git@github.com:&lt;username&gt;/&lt;project&gt;.git)成功地完成了这项工作。它根据 SSH 公钥对用户进行身份验证,您可以在命令行上生成该公钥——在 github 的“帮助”部分中有很多关于此的文档。

【讨论】:

  • 好的,那我再试试 SSH 访问方法。与 HTTPS 一样,我可以在 Organizer 窗口中添加一个 ssh 存储库,但似乎在与远程存储库交互时无法正确验证。感谢您让我知道您的工作正常。给了我一些希望!
  • 我写了一篇博客,讲述我让 GitHub 使用 SSH 方法在新项目上使用 XCode 4 的经验。感谢您对我的发现的想法,丹。 mindthe.net/devices/2011/04/28/…
  • 我成功通过终端推送了。但是当我从组织者那里尝试时,我在检查遥控器时得到了可怕的“找不到命令”,当我尝试推送时,遥控器显示为“离线”。它位于我本地网络上的 Mac Os X 服务器上...
【解决方案3】:

Xcode 6.2(可能还有 6.x)改变了一切。管理器中不再有存储库选项卡。以下是使用较新的 Xcode 的方法。

要将具有本地 git 存储库的项目添加到 GitHub,请执行以下操作:

  1. 转到“源代码管理”菜单,选择您的项目并选择“配置”:

  1. 你会看到:

  1. 选择遥控器选项卡,然后按左下角的“+”。选择添加遥控器。

  1. 输入远程存储库的名称,然后输入远程存储库的 URL。确保您已经创建了这个远程存储库,如果在 GitHub 上,请指定这是一个现有项目,而不是一个新项目。

  1. 你快完成了。转到源代码管理菜单并选择推送。然后,您将看到您在最后一步中使用的 repo 的名称,例如“simplest/master”;按下按钮。

完成。

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 2013-10-29
    • 2013-01-04
    • 2021-10-03
    • 2017-12-20
    • 2015-02-27
    • 1970-01-01
    • 2018-08-04
    • 2016-05-10
    相关资源
    最近更新 更多