在Xcode 4中,如何将远程GitHub存储库添加到现有本地项目?

时间:2011-04-27 12:02:36

标签: git github xcode4 push

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并尝试使用

  

档案 - &gt;源控制 - &gt;推......

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

然后会出现一个提示我输入用户名和密码的对话框,预先填写好,所以必须从本地存储库的配置中正确读取。

当我输入密码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 存储库已添加到管理器中的存储库浏览器中,我可以在GitHub上看到主分支,因此我知道凭据是正确的,我没有更改任何内容。

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

如果我克隆一个包含Xcode项目的现有GitHub存储库,请使用Xcode 4打开它,然后即使第一个Push似乎失败,第二次推送也会起作用。因此,从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. 尝试源代码管理 - &gt; Push和Xcode 4失败,因为访问存储库 RepositoryName 被拒绝,因此无法执行操作。检查用户名和密码'
  11. 尝试源代码管理 - &gt; Push和Xcode 4再次弹出远程Repository对话框,但这次检测到一个名为 origin 的远程Repository。旁边有一个黄色的球和'需要验证'。
  12. 再次点击“推送”会导致远程推送工作。
  13. 我发现并且还没有成功解决的一件事是,GitHub的回复消息带有checkin哈希值,并且任何消息似乎都在Xcode Log导航器中报告为推送失败,即使推送成功就GitHub而言。

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

3 个答案:

答案 0 :(得分:89)

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

前提条件

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

将其推到远程

  1. 在Xcode中打开 Organizer 并转到存储库标签

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

    Xcode Organizer

  3. 输入远程存储库的远程名称位置,然后单击“创建”

    Add a remote dialog

  4. 然后选择您的项目并打开File -> Source Control -> Push ...

    open push dialog

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

    push dialog

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

    result on GitHub

  7. 我希望它也适合你!在我的情况下,它适用于每个远程git存储库

    如果某些内容不清楚或写得不好,请与twitter联系!

答案 1 :(得分:2)

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

答案 2 :(得分:2)

Xcode 6.2(可能是6.x)改变了一切。组织者中不再有“存储库”选项卡。以下是使用较新的Xcodes的方法。

要将具有本地git存储库的项目添加到GitHub,您就是这样做的:

  1. 转到“源代码管理”菜单,选择项目并选择“配置:
  2. enter image description here

    1. 你会看到:
    2. enter image description here

      1. 选择遥控器选项卡,然后按左下角的“+”。选择添加远程。
      2. enter image description here

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

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