web-dev-qa-db-ja.com

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に戻って使用しようとすると

ファイル->ソース管理->プッシュ...

次に、変更をプッシュするリポジトリを選択してください。ダイアログが表示され、Originリモートリポジトリが一覧表示されます。認証が必要であることを示す黄色のインジケータがあります。これは、HTTPSの資格情報をまだ入力できていないので問題ありません。ただし、「プッシュ」をクリックして変更をプッシュしようとすると、「リポジトリ「Origin」へのアクセスが拒否されたため、操作を実行できませんでした」と表示されます。

ユーザー名とパスワードの入力を求めるダイアログが事前に入力された状態で表示されるため、ローカルリポジトリの設定からこれを正しく読み取る必要があります。

パスワードを入力すると、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にマスターブランチが表示されるため、資格情報が正しいことがわかります何も変えずに。

最初にローカルプロジェクトから始めてGitHubでXcode 4を使用する信頼できる方法を見つけた人はいますか?

Xcodeプロジェクトを含む既存のGitHubリポジトリのクローンを作成し、Xcode 4で開くと、最初のプッシュが失敗したように見えても、2番目のプッシュが機能しました。したがって、Xcode 4を使用して絶対にゼロから始めて、リポジトリを作成するのは最良のパターンではありません(Xcode 4の以降のバージョンでGitツールが改善されるまで)。

1つの回避策の詳細を編集

この例は、GitHubリポジトリに追加する最初のプロジェクトにのみ実際に適用されます。そのため、このソリューションにはまだXcodeの「落とし穴」が残っているように思われるので、次の手順をお勧めします。

  1. リストアイテム
  2. 「Xcodeへようこそ」ダイアログから「リポジトリに接続」。
  3. ロケーションにGitHub SSH URLを使用する
  4. 名前を付けて(RepositoryName)、ディレクトリに複製します
  5. コンテンツがダウンロードされても、最初の試行は失敗したようです
  6. もう一度試してみてください。
  7. オーガナイザーウィンドウで定義された新しいリポジトリがあり、そのオリジンはGitHubリモートSSH URLに設定されています。
  8. クローンを作成したディレクトリ内に新しいプロジェクトを作成しますが、[このプロジェクトのローカルgitリポジトリを作成する]オプションにチェックマークを付けないでください。
  9. ローカルGitリポジトリーへの初期コミットを行います。
  10. ソース管理を試す->プッシュし、「リポジトリへのアクセスRepositoryNameが拒否されたため、操作を実行できませんでした」とXcode 4が失敗します。ユーザー名とパスワードを確認してください '
  11. ソース管理を試す->プッシュすると、Xcode 4がリモートリポジトリダイアログを再びポップアップしますが、今回はOriginというリモートリポジトリを検出しました。その横に黄色のボールと「認証が必要」があります。
  12. [プッシュ]を再度クリックすると、リモートプッシュが機能します。

私が見つけたもののまだ解決できていないことの1つは、GitHubから返された応答メッセージがチェックインハッシュ値とすべてのメッセージがXcode Logナビゲータでプッシュ失敗として報告されるように見えることです。 GitHubは懸念しています。

他の誰かがより良い解決策を持っていますか?

50
jbjon

既存のプロジェクトをGitHubまたは他のリモートリポジトリにプッシュするXcodeの方法を見つけたと思います!

前提条件

  • Xcode 4 with ローカルgitリポジトリによって作成されたプロジェクトがあると仮定します。
  • 空のリモートgitリポジトリを作成しました(次の例でRemoteRepositoryと呼びます)

リモートにプッシュ

  1. XcodeでOrganizerを開き、Repositoriesタブに移動します

  2. 最初にRemotesをクリックしてから、「Add Remote」をクリックします

    Xcode Organizer

  3. リモートリポジトリのRemote NameLocationを入力し、[作成]をクリックします。

    Add a remote dialog

  4. 次に、プロジェクトを選択してFile -> Source Control -> Push ...を開きます

    open Push dialog

  5. リモートリポジトリを選択し、接続可能になるまで待ちます!括弧内のCreateを探します。

    Push dialog

  6. これで、古いプロジェクトがGitHubに公開されました

    result on GitHub

それがあなたにとってもうまくいくことを願っています!私の場合、すべてのリモートgitリポジトリで動作します。

不明な点や悪い英語で書かれたものがある場合は Twitter でご連絡ください!

89
Tim

私はこれをssh接続([email protected]:<username>/<project>.git)。 SSH公開鍵に基づいてユーザーを認証します。SSH公開鍵は、コマンドラインで生成できます。これについては、「ヘルプ」セクションのgithubでドキュメントの多くが生成されます。

2
Dan Ray

Xcode 6.2(および場合によっては6.x)で状況が変わりました。オーガナイザーに「リポジトリー」タブはなくなりました。新しいXcodeでこれを行う方法を次に示します。

ローカルgitリポジトリを含むプロジェクトをGitHubに追加するには、次のようにします。

  1. [ソース管理]メニューに移動し、プロジェクトを選択して[構成]を選択します。

enter image description here

  1. わかるでしょ:

enter image description here

  1. [リモート]タブを選択し、左下隅の[+]を押します。 [リモートの追加]を選択します。

enter image description here

  1. リモートリポジトリの名前を入力し、リモートリポジトリのURLを入力します。このリモートリポジトリが既に作成されていることを確認してください。GitHubの場合は、これが新しいプロジェクトではなく、既存のプロジェクトであることを確認してください。

enter image description here

  1. ほぼ終わりです。 [ソース管理]メニューに移動し、[プッシュ]を選択します。次に、最後の手順で使用したレポの名前(「シンプル/マスター」など)が表示されます。プッシュボタンを押します。

できた.

2
mahboudz