В Xcode 4 как мне добавить удаленный репозиторий GitHub в существующий локальный проект? - PullRequest
50 голосов
/ 27 апреля 2011

Интеграция с Git в Xcode 4 очень приветствуется, однако она кажется немного ненадежной, когда дело доходит до работы с удаленными репозиториями.Для ясности я использую OS X версии 10.6.7 и Xcode 4.0.2 (4A2002a).

Если я создам новый проект Xcode 4 и приму опцию создания локального репозитория Git, все в порядке.Я могу зафиксировать локально, и это здорово.

Когда я хочу перенести новый проект в GitHub, я хочу добавить удаленный репозиторий и перенести свои локальные изменения в GitHub.Я могу добавить репозиторий GitHub в Xcode 4 в качестве нового репозитория в окне Organizer, но нет способа установить его в качестве удаленного репозитория для моего существующего проекта.

Поэтому я переключаюсь на использование команд git в Терминале.

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

Если я затем возвращаюсь к Xcode 4 и пытаюсь использовать

Файл -> ИсточникУправление -> Push ...

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

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

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

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

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

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

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

Ответы [ 3 ]

89 голосов
/ 19 марта 2012

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

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

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

Нажмите его для удаленного доступа

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

  2. Сначала нажмите Remotes , а затем «Add Remote»

    Xcode Organizer

  3. Введите Удаленное имя и Местоположение вашего удаленного хранилища и нажмите кнопку создания

    Add a remote dialog

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

    open push dialog

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

    push dialog

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

    result on GitHub

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

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

2 голосов
/ 09 апреля 2015

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

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

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

enter image description here

Вы увидите:

enter image description here

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

enter image description here

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

enter image description here

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

Готово.

2 голосов
/ 27 апреля 2011

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

...