50 votes

Dans XCode 4, comment ajouter un référentiel GitHub distant à un projet local existant?

L'intégration de Git dans XCode 4 est la bienvenue cependant, elle semble être un peu capricieux quand il s'agit de traiter avec des dépôts distants. Pour plus de clarté, je suis sous mac OS X, la version 10.6.7 et XCode 4.0.2 (4A2002a).

Si je crée un nouveau XCode 4 du Projet et d'accepter la possibilité de créer un dépôt Git local, tout est bien. Je peux engager localement et c'est génial.

Quand j'ai envie de pousser le nouveau projet de GitHub, je veux ajouter un dépôt distant et de pousser mes modifications locales jusqu'à GitHub. Je peux ajouter un dépôt GitHub pour XCode 4 comme un nouveau Référentiel dans l'Organisateur de la fenêtre mais il n'y a pas de méthode de le définir comme un dépôt distant pour mon projet existant.

J'ai donc passer à l'utilisation de git commandes dans le Terminal.

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

Si je puis revenir à XCode 4 et essayez de l'utiliser

Fichier -> Contrôle De La Source -> Pousser...

ensuite, le choix du dépôt de pour pousser les changements. boîte de dialogue affiche la liste de l' origine des dépôts distants. Il y a un indicateur jaune en disant que l'Authentification est requise, ce qui est bien car je n'ai pas été en mesure d'entrer mes identifiants encore pour HTTPS. Cependant lorsque je clique sur "Push" et il essaie de pousser les modifications, il dit: "L'opération n'a pas pu être effectuée car l'accès au répertoire "origine " refusé".

Une boîte de dialogue qui invite moi pour mon nom d'utilisateur et le mot de passe s'affiche ensuite avec mon pré-rempli donc ça doit être la lecture de cet correctement à partir du référentiel local de la config.

Lorsque j'entre mon mot de passe XCode 4 puis se bloque avec l'erreur suivante

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

Si je redémarre XCode l' origine du référentiel a été ajouté à la Dépôts navigateur de l'Organisateur et je peux voir la branche master sur GitHub, donc je sais que les informations d'identification sont à droite sans me changer quoi que ce soit.

Quelqu'un a trouvé un moyen fiable de l'utilisation de XCode 4 avec GitHub de commencer avec un projet local en premier?

Si je clone un existant GitHub avec un projet XCode, l'ouvrir avec XCode 4 ensuite, même si le premier semble Pousser à l'échec, la 2ème pousser a travailler. Alors peut-être à partir de zéro absolu avec XCode 4 création du référentiel pour moi n'est pas le meilleur modèle (jusqu'à ce qu'ils améliorent le Git de l'outillage dans une version ultérieure de XCode 4).

MODIFIER AVEC DE PLUS AMPLES DÉTAILS D'UNE SOLUTION DE CONTOURNEMENT

Cet exemple ne s'applique vraiment à le premier projet que vous ajoutez à un dépôt GitHub. En tant que tel, je pense que vous êtes mieux avec les étapes suivantes, en gardant à l'esprit il ya encore semblent être certains XCode 'pièges' dans cette solution.

  1. Élément de la liste
  2. "Se connecter à un référentiel" de Bienvenue à XCode boîte de dialogue.
  3. Utiliser GitHub URL SSH pour l'Emplacement
  4. Donnez-lui un nom (RepositoryName)et le Clone d'un répertoire
  5. 1ère tentative apparaît à l'échec, même si les contenus sont téléchargés
  6. Essayez de Nouveau, et cela fonctionne.
  7. Il y a maintenant un nouveau Référentiel défini dans l'Organisateur de la fenêtre avec son origine sur le GitHub à distance SSH URL.
  8. Créer un Nouveau Projet dans le répertoire que vous venez de cloner, mais NE cochez PAS la "Créer un dépôt git local pour ce projet," option.
  9. N'initiale s'engager à dépôt Git local.
  10. Essayez de Contrôle de la Source -> Push et XCode 4 ne fonctionne pas avec " L'opération n'a pas pu être effectuée en raison de l'accès au référentiel RepositoryName a été refusé. Vérifier le nom d'utilisateur et le mot de passe'
  11. Essayez de Contrôle de la Source -> Push et XCode 4 apparaît le Dépôt distant boîte de dialogue nouveau, mais cette fois a détecté un Dépôt distant appelé origine. À côté de cela il y a une boule jaune et "Authentification requise".
  12. En cliquant sur "Push" à nouveau provoqué la distance Pousser à travailler.

Une chose que j'ai repéré et pas réussi à travailler encore, c'est que la réponse des messages à partir de GitHub avec l'arrivée de la valeur de hachage et les messages semblent être déclarés dans XCode Journal navigateur Push défaillances, même si le Push est un succès autant que GitHub est concerné.

Quelqu'un d'autre a une meilleure solution?

89voto

Tim Krueger Points 2177

Je crois que j'ai trouvé le Xcode pour pousser un projet existant pour GitHub ou de tout autre dépôt distant!

Conditions préalables

  • Je suppose que vous avez un projet créé par Xcode 4 avec un dépôt git local.
  • Vous avez créé un vide de dépôts git distant (je l'appelle RemoteRepository dans l'exemple suivant)

Pousser à distance

  1. Ouvrez l' Organisateur dans Xcode accéder à la Dépôts onglet

  2. Au premier clic sur les Télécommandes et ensuite sur "Ajouter à Distance"

    Xcode Organizer

  3. Entrez un Nom à Distance et l' Emplacement de votre dépôt distant et cliquez sur créer

    Add a remote dialog

  4. Ensuite, sélectionnez votre projet et ouvrez File -> Source Control -> Push ...

    open push dialog

  5. Sélectionnez votre dépôt distant et attendre jusqu'à ce qu'il est connectable! Regardez pour les Créer dans les crochets.

    push dialog

  6. Maintenant votre ancien projet publié sur GitHub

    result on GitHub

J'espère que cela fonctionne pour vous aussi! Dans mon cas, il fonctionne avec tous les dépôts git distant.

Veuillez me contacter sur twitter ou ADN si quelque chose de pas clair ou écrit en mauvais anglais!

2voto

Dan Ray Points 14852

J'ai réussi à utiliser une connexion SSH (qui ressemble à git@github.com:<username>/<project>.git ). Il authentifie l'utilisateur sur la base d'une clé publique SSH, que vous pouvez générer sur la ligne de commande - de nombreux documents à ce sujet sur github dans la section "aide".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X