在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的问题。
- 项目清单
- 从“欢迎使用XCode”对话框中select“连接到存储库”。
- 使用GitHub SSH URL来定位
- 给它一个名称( RepositoryName )和克隆到一个目录
- 即使下载了内容,第一次尝试似乎也失败了
- 再试一次,它的工作原理。
- 现在在pipe理器窗口中定义了一个新的存储库,其源设置为GitHub远程SSH URL。
- 在刚刚克隆的目录中创build一个新项目,但不要勾选“为该项目创build本地git存储库”选项。
- 首先提交到本地Git仓库。
- 尝试源代码pipe理 – >推送和XCode 4失败,'操作无法执行,因为对存储库RepositoryName的访问被拒绝。 检查用户名和密码“
- 尝试源代码pipe理 – > Push和XCode 4再次popup远程Repository对话框,但是这次检测到一个名为origin的远程Repository。 在它旁边有一个黄色的球和“需要validation”。
- 再次单击“推送”导致远程推送工作。
我发现的一件事情,还没有设法解决的办法是从GitHub的签入哈希值和任何消息的回复消息似乎在XCode日志导航器中报告为推失败,即使推成功尽可能GitHub担心。
任何人有更好的解决scheme?
我想我find了Xcode的方式来推动现有的项目到GitHub或任何其他远程存储库!
前提条件
- 我假设你有一个由Xcode 4创build的项目和一个本地的git仓库。
- 你创build了一个空的远程git仓库(我在下面的例子中将其称为RemoteRepository )
推到远程
-
在Xcode中打开Organizer ,进入Repositories选项卡
-
首先点击远程 ,然后点击“添加远程”
-
input一个远程名称和远程仓库的位置 ,然后点击创build
-
然后select你的项目,并打开
File -> Source Control -> Push ...
-
select您的远程存储库,并等待它可以连接! 在括号中查找Create 。
-
现在你的旧项目发布到GitHub
我希望它也适用于你! 在我的情况下,它适用于每个远程git存储库 。
请在Twitter上与我联系,如果有什么不清楚的地方或者用英文写得不好!
我已经成功地使用ssh连接(它看起来像git@github.com:<username>/<project>.git
)。 它基于一个SSH公钥(可以在命令行上生成)来validation用户的身份 – 在“帮助”部分中有许多关于github的文档。
Xcode 6.2(也可能是6.x)改变了事情。 pipe理器中不再有“存储库”选项卡。 以下是如何使用较新的Xcode进行操作。
要添加一个具有本地git仓库的项目给GitHub,这是你的工作:
- 转到源代码pipe理菜单,select您的项目,然后selectconfiguration:
- 你会看到的:
- select远程选项卡,然后按下左下angular的“+”。 select添加远程。
- input远程存储库的名称,然后键入远程存储库的URL。 确保你已经创build了这个远程仓库,如果在GitHub上,你是否指定这是一个现有的项目,而不是一个新的。
- 你几乎完成。 转到“源代码pipe理”菜单并select“推送”。 然后你会看到你在最后一步使用的回购商品的名称,如“最简单/主”。 按下button。
完成。