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

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

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

然后选择要推送更改的存储库。 出现对话框列出了原始远程存储库。 有一个黄色指示灯表示需要身份验证,这很好,因为我还没有为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,则源代码库已添加到Organizer中的Repositories浏览器中,并且我可以在GitHub上看到主分支,所以我知道凭据是正确的,无需更改任何内容。

有没有人首先从本地项目中找到了使用GitHub的XCode 4的可靠方法?

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

编辑一个替代方法的更多细节

这个例子只适用于你添加到GitHub仓库的第一个项目。 因此,我认为您最好采用以下步骤,同时铭记这种解决方案似乎仍然存在一些XCode“陷阱”。

  • 项目清单
  • 从欢迎使用XCode对话框'连接到存储库'。
  • 使用GitHub SSH URL定位
  • 为它命名(RepositoryName)并克隆到目录
  • 即使内容已下载,第一次尝试仍然失败
  • 再试一次,它的工作原理。
  • 现在在管理器窗口中定义了一个新的存储库,其源设置为GitHub远程SSH URL。
  • 在刚刚克隆的目录中创建一个新项目,但不要勾选'为该项目创建本地git存储库'选项。
  • 首先提交到本地Git存储库。
  • 尝试源代码管理 - >推送和XCode 4失败,由于无法执行操作,因为对存储库RepositoryName的访问被拒绝。 检查用户名和密码'
  • 尝试源代码管理 - > Push和XCode 4再次弹出远程存储库对话框,但是这次检测到一个名为origin的远程存储库。 在它旁边有一个黄色的球和'需要验证'。
  • 再次单击“推送”会导致远程Push工作。
  • 我发现的一件事,还没有设法解决的问题是,GitHub的checkin哈希值和任何消息的响应消息似乎在XCode Log导航器中被报告为Push失败,即使Push是成功的GitHub担心。

    任何人都有更好的解决方案?


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

    前提条件

  • 我假设你已经通过的Xcode 4 本地的Git仓库创建的项目。
  • 你创建了一个空的远程git仓库(我在下面的例子中将其称为RemoteRepository)
  • 将它推到远程

  • 打开Xcode中的管理器,进入存储库标签

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

    Xcode组织者

  • 输入一个远程名称和远程仓库的位置并点击创建

    添加一个远程对话框

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

    打开推送对话框

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

    推送对话框

  • 现在你的旧项目发布到GitHub

    结果在GitHub上

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

    请在Twitter上与我联系,如果有不清楚的地方或者用英文写得不好!


    我已经成功使用ssh连接(它看起来像git@github.com:<username>/<project>.git )。 它根据SSH公钥验证用户,您可以在命令行上生成SSH公钥 - 在“帮助”部分的许多关于github的文档。


    Xcode 6.2(可能还有6.x)改变了事情。 Organizer中不再有Repositories选项卡。 以下是如何使用较新的Xcode进行操作的方法。

    要将具有本地git存储库的项目添加到GitHub,这是你的工作:

  • 转到源代码管理菜单,选择您的项目并选择配置:
  • 在这里输入图像描述

  • 你会看到的:
  • 在这里输入图像描述

  • 选择远程选项卡,然后按下左下角的“+”。 选择添加远程。
  • 在这里输入图像描述

  • 输入远程存储库的名称,然后键入远程存储库的URL。 确保你已经创建了这个远程仓库,如果在GitHub上,make是你指定这是一个现有的项目,而不是一个新项目。
  • 在这里输入图像描述

  • 你几乎完成。 转至源代码管理菜单并选择推送。 然后你会看到你在最后一步使用的回购商品的名称,比如“最简单/主”。 按下按钮。
  • 完成。

    链接地址: http://www.djcxy.com/p/16413.html

    上一篇: In XCode 4 how do I add a remote GitHub repository to an existing local project?

    下一篇: Is it possible to use pip to install a package from a private github repository?