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

Интеграция 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 и попытаюсь использовать

Файл -> Система управления версиями -> Нажать...

затем появится диалоговое окно Выберите репозиторий, в который следует отправить изменения. со списком удаленного репозитория origin. Есть желтый индикатор, говорящий о том, что требуется аутентификация, и это нормально, поскольку я еще не смог ввести свои учетные данные для 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

Если я перезапущу Xcode, репозиторий origin будет добавлен в обозреватель репозиториев в Organizer, и я увижу основную ветку на GitHub, поэтому я знаю, что учетные данные верны, и я ничего не меняю.

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

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

ИЗМЕНИТЬ С ДОПОЛНИТЕЛЬНЫМИ ДЕТАЛЯМИ ОДНОГО ВРЕМЕННОГО РЕШЕНИЯ

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

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

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

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


person jbjon    schedule 27.04.2011    source источник
comment
Спасибо, что поделились своим решением!   -  person Chris Devereux    schedule 06.06.2011


Ответы (3)


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

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

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

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

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

  2. Сначала нажмите Remotes, а затем «Добавить Remote».

    Организатор Xcode

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

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

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

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

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

    push диалог

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

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

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

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

person Tim    schedule 19.03.2012
comment
Спасибо, это единственное решение, которое сработало для меня, так как у меня был существующий проект. - person robhasacamera; 19.04.2012
comment
@Tim Krueger: Привет, Тим, спасибо за разъяснения :), мне интересно, могу ли я опубликовать свой проект на GitHub, чтобы его могли видеть only члены команды, пока мы его разрабатываем, чтобы сделать GitHub общим местом для моей команды. Спасибо заранее - person Luca; 12.05.2012
comment
@Luca Является ли ваш комментарий вопросом? Конечно, это возможно. Но вы должны платить за приватные репозитории на GitHub! - person Tim; 05.06.2012
comment
Почему бы не использовать вместо этого BitBucket? Он поддерживает Git. - person Teofilo Israel Vizcaino Rodrig; 14.06.2012
comment
@TeofiloIsraelVizcainoRodrig Проблема была не в поставщике репозитория! Мое описание должно работать и с BitBucket. - person Tim; 16.06.2012
comment
@Tim Krueger Я имею в виду, что в BitBucket вы можете иметь частные репозитории без оплаты - person Teofilo Israel Vizcaino Rodrig; 20.06.2012
comment
@TeofiloIsraelVizcainoRodrig Извините! Я не имел в виду старые комментарии! - person Tim; 21.06.2012
comment
Привет @TimKrueger, я создал репозиторий на своем MAC. И попытался протолкнуть проект с другого MAC в моей локальной сети. Но не получилось. Тогда я попробовал, как вы сказали. с самого моего Mac, но также и тогда, когда я пытаюсь нажать, он говорит, что пульты не найдены. Как я могу создать репозиторий в своей локальной сети и работать с моими соразработчиками - person Johnykutty; 27.06.2012
comment
@Johnykutty Думаю, проблем может быть больше. Папка с репозиторием расшарена в вашей сети? Вы используете гитолит или другой инструмент? И я думаю, что есть еще много вопросов. Создайте новый вопрос в stackoverflow и объясните все детали вашей проблемы. - person Tim; 28.06.2012
comment
@TimKrueger спасибо за ответ :) Можете ли вы предложить руководство по настройке репозитория git в моей частной сети, извините, я новичок в этой области :( - person Johnykutty; 28.06.2012
comment
@Johnykutty Только если ты знаешь немецкий! Я предлагаю официальную документацию: git-scm.com/documentation - person Tim; 28.06.2012
comment
Поздно, я знаю, но спасибо за это. Действительно легко следовать и работал удовольствие. - person Robert; 21.11.2012
comment
@Tim Krueger спасибо за отличный урок, но у меня возникли проблемы с шагами. Когда я выбираю нажать изменения . У меня нет возможности создать. Можете ли вы сказать мне, как я могу получить RepoName/master (Create). - person Sneha; 14.02.2013
comment
@sneha Вы действительно рассмотрели предварительные условия? - person Tim; 14.02.2013
comment
@Tim Krueger, да, при создании репозитория на сайте git Hub произошла простая ошибка. - person Sneha; 16.02.2013
comment
Я получаю HTTP403 при попытке отправить (ошибка: запрошенный URL вернул ошибку: 403 при доступе к github.com . .. /info/refs Кто-нибудь столкнулся с этой ошибкой и устранил ее?Я xcode4.2 - person nzs; 22.03.2013
comment
Этот метод в основном работал для меня. Мне пришлось использовать URL-адрес HTTPS для местоположения, а не URL-адрес SSL. В остальном работал как чемпион. Спасибо! - person picciano; 23.03.2013
comment
@codedad Я пытался воспроизвести вашу ошибку. Это открытый репозиторий? Можете ли вы опубликовать его URL? - person Tim; 29.03.2013
comment
@Tim: это был мой репозиторий, чтобы ответить на ТАК вопрос: github.com/codedad/ioselbowconnector.git, который я добавил на github с помощью терминала. Недавно я перешел на xcode4.6.1, надеюсь, он справится лучше. - person nzs; 29.03.2013

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

person Dan Ray    schedule 27.04.2011
comment
Хорошо, тогда я попробую использовать метод доступа SSH еще раз. Как и в случае с HTTPS, я могу добавить репозиторий ssh ​​в окно Organizer, но, похоже, он находится в точке взаимодействия с удаленным репозиторием, который не может правильно аутентифицироваться. Спасибо, что сообщили мне, что у вас все работает нормально. Дает мне некоторую надежду! - person jbjon; 27.04.2011
comment
Я написал блог о своем опыте использования GitHub для работы с XCode 4 в новых проектах с использованием метода SSH. Буду признателен за ваши мысли о том, что я нашел, Дэн. mindthe.net /устройства/2011/04/28/ - person jbjon; 28.04.2011
comment
Я успешно протолкнул терминал. Но когда я попытался из Органайзера, я получил ужасную команду, не найденную при проверке пульта, и при попытке нажать пульт отображается как «не в сети». Он расположен на сервере Mac Os X в моей локальной сети... - person Nicolas Miari; 13.06.2012

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

Чтобы добавить проект с локальным репозиторием git на GitHub, выполните следующие действия:

  1. Перейдите в меню Source Control, выберите свой проект и выберите Configure:

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

  1. Вот увидишь:

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

  1. Выберите вкладку «Пульты» и нажмите «+» в левом нижнем углу. Выберите Добавить пульт.

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

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

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

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

Сделанный.

person mahboudz    schedule 09.04.2015