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

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

如果我创build一个新的XCode 4项目,并接受创build本地Git存储库的选项,一切都很好。 我可以在当地进行,这很好。

当我想将新项目推送到GitHub时,我想添加一个远程仓库,并将我的本地更改推送到GitHub。 我可以在pipe理器窗口中添加一个GitHub仓库到XCode 4作为一个新的仓库,但是没有办法将它设置为我现有项目的远程仓库。

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

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

如果我然后回到XCode 4并尝试使用

文件 – >源代码pipe理 – >推…

然后select要推送更改的存储库。 出现对话框,列出远程存储源。 有一个黄色的指示灯,说需要身份validation,这是好的,因为我还没有能够input我的凭据尚未HTTPS。 但是,当我点击“推”,并试图推动更改它说:“操作无法执行,因为访问存储'起源'被拒绝。

一个对话框提示我input用户名和密码,然后显示我的预先填写,所以它必须从本地存储库的configuration正确读取。

当我input我的密码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,一个存储库已被添加到pipe理器中的存储库浏览器,我可以看到GitHub上的主分支,所以我知道没有我改变任何东西的凭据是正确的。

有没有人find一个可靠的方式来使用GitHub从本地项目开始使用XCode 4?

如果我用一个XCode项目克隆一个现有的GitHub仓库,使用XCode 4打开它,然后即使第一个Push似乎失败了,第二个button也能工作。 所以也许从XCode 4的绝对从头开始创build存储库对我来说不是最好的模式(直到他们改进了XCode 4的更高版本中的Git工具)。

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

这个例子只适用于你添加到GitHub仓库的第一个项目。 因此,我认为你最好采用以下步骤,同时考虑到在这个解决scheme中似乎还存在一些XCode的问题。

  1. 项目清单
  2. 从“欢迎使用XCode”对话框中select“连接到存储库”。
  3. 使用GitHub SSH URL来定位
  4. 给它一个名称( RepositoryName )和克隆到一个目录
  5. 即使下载了内容,第一次尝试似乎也失败了
  6. 再试一次,它的工作原理。
  7. 现在在pipe理器窗口中定义了一个新的存储库,其源设置为GitHub远程SSH URL。
  8. 在刚刚克隆的目录中创build一个新项目,但不要勾选“为该项目创build本地git存储库”选项。
  9. 首先提交到本地Git仓库。
  10. 尝试源代码pipe理 – >推送和XCode 4失败,'操作无法执行,因为对存储库RepositoryName的访问被拒绝。 检查用户名和密码“
  11. 尝试源代码pipe理 – > Push和XCode 4再次popup远程Repository对话框,但是这次检测到一个名为origin的远程Repository。 在它旁边有一个黄色的球和“需要validation”。
  12. 再次单击“推送”导致远程推送工作。

我发现的一件事情,还没有设法解决的办法是从GitHub的签入哈希值和任何消息的回复消息似乎在XCode日志导航器中报告为推失败,即使推成功尽可能GitHub担心。

任何人有更好的解决scheme?

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

前提条件

  • 我假设你有一个由Xcode 4创build的项目一个本地的git仓库。
  • 你创build了一个空的远程git仓库(我在下面的例子中将其称为RemoteRepository

推到远程

  1. 在Xcode中打开Organizer ,进入Repositories选项卡

  2. 首先点击远程 ,然后点击“添加远程”

    Xcode组织者

  3. input一个远程名称和远程仓库的位置 ,然后点击创build

    添加一个远程对话框

  4. 然后select你的项目,并打开File -> Source Control -> Push ...

    打开推送对话框

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

    推送对话框

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

    结果在GitHub上

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

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

我已经成功地使用ssh连接(它看起来像git@github.com:<username>/<project>.git )。 它基于一个SSH公钥(可以在命令行上生成)来validation用户的身份 – 在“帮助”部分中有许多关于github的文档。

Xcode 6.2(也可能是6.x)改变了事情。 pipe理器中不再有“存储库”选项卡。 以下是如何使用较新的Xcode进行操作。

要添加一个具有本地git仓库的项目给GitHub,这是你的工作:

  1. 转到源代码pipe理菜单,select您的项目,然后selectconfiguration:

在这里输入图像说明

  1. 你会看到的:

在这里输入图像说明

  1. select远程选项卡,然后按下左下angular的“+”。 select添加远程。

在这里输入图像说明

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

在这里输入图像说明

  1. 你几乎完成。 转到“源代码pipe理”菜单并select“推送”。 然后你会看到你在最后一步使用的回购商品的名称,如“最简单/主”。 按下button。

完成。