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

jbj*_*jon 50 git push github xcode4

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
Run Code Online (Sandbox Code Playgroud)

如果我然后回到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
Run Code Online (Sandbox Code Playgroud)

如果我重新启动Xcode,原始存储库已添加到管理器中的存储库浏览器中,我可以在GitHub上看到主分支,因此我知道凭据是正确的,我没有更改任何内容.

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

如果我克隆一个带有Xcode项目的现有GitHub存储库,用Xcode 4打开它,那么即使第一个Push似乎失败了,第二次推送也会起作用.因此,从Xcode 4的绝对划痕开始,为我创建存储库并不是最好的模式(直到他们在Xcode 4的更高版本中改进Git工具).

编辑一个工作的进一步细节

此示例仅适用于您要添加到GitHub存储库的第一个项目.因此,我认为你最好通过以下步骤,记住在这个解决方案中似乎仍然存在一些Xcode'陷阱'.

  1. 项目清单
  2. 从Welcome to Xcode对话框中"连接到存储库".
  3. 使用GitHub SSH URL进行定位
  4. 为它命名(RepositoryName)并克隆到目录
  5. 即使下载了内容,第一次尝试似乎也会失败
  6. 再试一次,它的确有效.
  7. 现在,在Organizer窗口中定义了一个新的Repository,其原点设置为GitHub远程SSH URL.
  8. 在刚刚克隆到的目录中创建一个新项目,但不要勾选"为此项目创建本地git存储库"选项.
  9. 初始提交到本地Git存储库.
  10. 尝试源代码管理 - >推送和Xcode 4失败,因为访问存储库RepositoryName被拒绝,无法执行操作.检查用户名和密码'
  11. 尝试Source Control - > Push和Xcode 4再次弹出远程Repository对话框,但这次检测到一个名为origin的远程Repository .旁边有一个黄色球和'需要验证'.
  12. 再次单击"推送"会导致远程推送工作.

我发现并且还没有成功解决的一件事是,从GitHub返回的响应消息带有checkin哈希值,并且任何消息似乎都在Xcode Log导航器中作为Push故障报告,即使Push成功到目前为止GitHub很担心.

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

Tim*_*Tim 89

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

前提条件

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

将其推到远程

  1. 在Xcode中打开管理器,然后转到" 存储库"选项卡

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

    Xcode Organizer

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

    添加远程对话框

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

    打开推送对话框

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

    推送对话框

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

    结果在GitHub上

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

如果不清楚或写不好的英语,请在推特上与我联系!