В Xcode 4 как мне добавить удаленный репозиторий GitHub в существующий локальный проект?

#git #github #xcode4 #push

#git #github #xcode4 #толкать

Вопрос:

Интеграция Git в Xcode 4 очень приветствуется, однако она кажется немного неровной, когда дело доходит до работы с удаленными репозиториями. Для наглядности я использую 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 и попытаюсь использовать

Файл -> Управление версиями -> Push…

затем выберите репозиторий, в который будут внесены изменения.появится диалоговое окно со списком исходного удаленного репозитория. Желтый индикатор говорит о том, что требуется аутентификация, что нормально, поскольку я еще не смог ввести свои учетные данные для HTTPS. Однако, когда я нажимаю «Push» и он пытается внести изменения, он сообщает «Операция не может быть выполнена, поскольку доступ к репозиторию «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 для отличного происхождения репозиторий был добавлен в репозитории браузера в организаторе и я вижу ветку master на GitHub, так что я знаю, что учетные данные правильно и без меня меняется ничего.

Кто-нибудь нашел надежный способ использования Xcode 4 с GitHub, начиная сначала с локального проекта?

Если я клонирую существующий репозиторий GitHub с проектом Xcode в нем, откройте его с помощью Xcode 4, тогда, несмотря на то, что первое нажатие, похоже, завершилось неудачей, второе нажатие сработало. Так что, возможно, начинать с нуля с Xcode 4, создавая репозиторий для меня, не лучший вариант (пока они не улучшат инструментарий Git в более поздней версии Xcode 4).

РЕДАКТИРОВАТЬ С ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИЕЙ Об ОДНОМ ОБХОДНОМ ПУТИ

Этот пример действительно применим только к первому проекту, который вы добавляете в репозиторий GitHub. Поэтому я думаю, что вам лучше выполнить следующие шаги, учитывая, что в этом решении, похоже, все еще есть некоторые «подводные камни» Xcode.

  1. Элемент списка
  2. «Подключиться к репозиторию» из диалогового окна Добро пожаловать в Xcode.
  3. Используйте SSH-URL GitHub для определения местоположения
  4. Дайте ему имя (RepositoryName) и клонируйте в каталог
  5. первая попытка, похоже, завершается неудачей, хотя содержимое загружено
  6. Попробуйте еще раз, и это сработает.
  7. Теперь в окне Organizer определен новый репозиторий, источником которого является удаленный SSH-URL GitHub.
  8. Создайте новый проект в каталоге, в который вы только что клонировали, но НЕ отмечайте опцию «Создать локальный репозиторий git для этого проекта».
  9. Выполните первоначальную фиксацию в локальном репозитории Git.
  10. Попробуйте управление версиями -> Push, и Xcode 4 завершается с ошибкой ‘Операция не может быть выполнена, поскольку доступ к репозиторию RepositoryName был запрещен. Проверьте имя пользователя и пароль’
  11. Попробуйте управление версиями -> Push, и Xcode 4 снова откроет диалоговое окно удаленного репозитория, но на этот раз обнаружил удаленный репозиторий с именем origin. Рядом с ним есть желтый шар и «Требуется аутентификация».
  12. Повторное нажатие ‘Push’ привело к тому, что удаленный Push заработал.

Одна вещь, которую я заметил, но еще не успел проработать, заключается в том, что ответные сообщения от GitHub с контрольным значением хэша и любые сообщения, похоже, отображаются в Xcode Log navigator как сбои отправки, даже если отправка прошла успешно, насколько это касается GitHub.

У кого-нибудь еще есть решение получше?

Ответ №1:

Я думаю, что нашел способ Xcode перенести существующий проект в GitHub или любой другой удаленный репозиторий!

Предварительные условия

  • Я предполагаю, что у вас есть проект, созданный Xcode 4 с использованием локального репозитория git.
  • Вы создали пустой удаленный репозиторий git (в следующем примере я называю его RemoteRepository)

Отправьте его на удаленный

  1. Откройте Органайзер в Xcode и перейдите на вкладку Репозитории

  2. Сначала нажмите на пульты, а затем на «Добавить удаленный»

    Xcode Organizer

  3. Введите удаленное имя и местоположение вашего удаленного репозитория и нажмите создать

    Добавить удаленный диалог

  4. Затем выберите свой проект и откройте File -> Source Control -> Push ...

    открыть диалоговое окно push

  5. Выберите свой удаленный репозиторий и подождите, пока к нему можно будет подключиться! Найдите Создать в скобках.

    диалоговое окно нажатия

  6. Теперь ваш старый проект опубликован на GitHub

    результат на GitHub

Я надеюсь, что это сработает и у вас! В моем случае это работает с каждым удаленным репозиторием git.

Пожалуйста, свяжитесь со мной в Twitter, если что-то неясно или написано на плохом английском!

Комментарии:

1. Спасибо, это единственное решение, которое сработало для меня, поскольку у меня был существующий проект.

2. @Tim Krueger: Привет, Тим, спасибо за разъяснения :), мне интересно, могу ли я опубликовать свой проект на GitHub, чтобы его видели only члены команды, пока мы его разрабатываем, чтобы сделать GitHub общим местом для моей команды. Заранее спасибо

3. @Luca Ваш комментарий — это вопрос? Уверен, что это возможно. Но вы должны платить за частные репозитории на GitHub!

4. Почему бы вместо этого не использовать BitBucket?. Он поддерживает Git.

5. @TeofiloIsraelVizcainoRodrig Проблема заключалась не в поставщике репозитория! Мое описание должно работать также с BitBucket.

Ответ №2:

Я успешно сделал это, используя ssh-соединение (которое выглядит как git@github.com:<username>/<project>.git ). Он аутентифицирует пользователя на основе открытого ключа SSH, который вы можете сгенерировать в командной строке — множество документов об этом на github в разделе «справка».

Комментарии:

1. Хорошо, тогда я попробую использовать другой метод доступа SSH. Как и HTTPS, я могу добавить репозиторий ssh в окно Organizer, но, похоже, в момент взаимодействия с удаленным репозиторием он не проходит надлежащую аутентификацию. Спасибо, что сообщили мне, что у вас все работает нормально. Дает мне некоторую надежду!

2. Я написал в блоге о своем опыте подключения GitHub к работе с XCode 4 над новыми проектами с использованием метода SSH. Был бы признателен за ваши мысли о том, что я нашел, Дэн. mindthe.net/devices/2011/04/28 /…

3. Я успешно запустил терминал. Но когда я попытался из органайзера, я получил страшную «команда не найдена» при проверке пульта дистанционного управления, а при попытке нажать, пульт отображается как «отключенный». Он расположен на сервере Mac Os X в моей локальной сети…

Ответ №3:

Xcode 6.2 (и, возможно, 6.x) изменил ситуацию. В органайзере больше нет вкладки Репозитории. Вот как это сделать с более новыми Xcodes.

Чтобы добавить проект с локальным репозиторием git в GitHub, вот что вы делаете:

  1. Перейдите в меню управления версиями, выберите свой проект и выберите Настроить:

введите описание изображения здесь

  1. Вы увидите:

введите описание изображения здесь

  1. Выберите вкладку Remotes и нажмите » » в левом нижнем углу. Выберите Добавить удаленный.

введите описание изображения здесь

  1. Введите имя удаленного репозитория и URL-адрес вашего удаленного репозитория. Убедитесь, что вы уже создали этот удаленный репозиторий, и если на GitHub, make вы указываете, что это существующий проект, а не новый.

введите описание изображения здесь

  1. Вы почти закончили. Перейдите в меню управления версиями и выберите Push. Затем вы увидите название репозитория, который вы использовали на последнем шаге, что-то вроде «simplest / master»; нажмите кнопку.

Выполнено.