В 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 и попробую использовать
Файл → Управление источником → 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, исходный репозиторий был добавлен в браузер Хранилища в Organizer, и я могу видеть главную ветку на GitHub, поэтому я знаю, что учетные данные верны, без меня что-то меняя.
Кто-нибудь нашел надежный способ использования XCode 4 с GitHub, начиная с локального проекта?
Если я клонирую существующий репозиторий GitHub с проектом XCode в нем, откройте его с помощью XCode 4, тогда даже если первый Push, похоже, не работает, тогда работает 2-й push. Поэтому, возможно, начиная с абсолютной царапины с XCode 4, создавая репозиторий для меня, это не лучший шаблон (пока они не улучшат оснастку Git в более поздней версии XCode 4).
ИЗМЕНИТЬ ДАЛЬНЕЙШИЕ ДЕТАЛИ ОДНОГО ПОСЛЕДНЕГО ПОСЛЕДНЕГО
Этот пример действительно применим только к первому проекту, который вы добавляете в репозиторий GitHub. Как таковой, я думаю, что вам будет лучше со следующими шагами, имея в виду, что в этом решении все еще есть некоторые ошибки XCode.
- Элемент списка
- "Подключиться к репозиторию" из диалога "Добро пожаловать в XCode".
- Использовать URL-адрес GHHHH SSH для местоположения
- Дайте ему имя (RepositoryName) и Clone в каталог
- Первая попытка оказывается неудачной, даже если содержимое загружено
- Попробуйте снова, и он работает.
- В окне "Организатор" появился новый репозиторий, источник которого установлен на удаленный SSH-адрес GitHub.
- Создайте новый проект в каталоге, в который вы клонировали, но НЕ устанавливайте флажок "Создать локальный репозиторий Git для этого проекта".
- Сделать первоначальную фиксацию в локальном репозитории Git.
- Попробуйте Source Control → Push и XCode 4 сбой: "Операция не может быть выполнена, потому что был запрещен доступ к хранилищу RepositoryName. Проверьте имя пользователя и пароль
- Попробуйте Source Control → Push и XCode 4 снова откроет диалоговое окно удаленного репозитория, но на этот раз обнаружил удаленный репозиторий с именем origin. Рядом с ним есть желтый шар и "Требуется аутентификация".
- Нажатие кнопки "Push" снова заставило удаленный Push работать.
Одна вещь, которую я заметил и еще не успел выработать, - это то, что ответные сообщения от GitHub с хеш-значением checkin и любые сообщения, как представляется, сообщаются в навигаторе XCode Log в качестве сбоев Push, даже несмотря на то, что Push успешно что касается GitHub.
У кого-нибудь есть лучшее решение?
Ответы
Ответ 1
Я думаю, что нашел способ Xcode протолкнуть существующий проект в GitHub или любой другой удаленный репозиторий!
Предпосылки
- Я предполагаю, что у вас есть проект, созданный Xcode 4 с локальным репозиторием git.
- Вы создали пустой удаленный репозиторий git (я называю его RemoteRepository в следующем примере)
Нажмите на удаленный
-
Откройте Организатор в Xcode, перейдите на вкладку Хранилища
-
Сначала нажмите "Пульты", а затем "Добавить удаленный"
![Xcode Organizer]()
-
Введите удаленное имя и местоположение удаленного репозитория и нажмите кнопку create
![Add a remote dialog]()
-
Затем выберите свой проект и откройте File -> Source Control -> Push ...
![open push dialog]()
-
Выберите удаленный репозиторий и дождитесь его подключения! Найдите "Создать" в скобках.
![push dialog]()
-
Теперь ваш старый проект опубликован в GitHub
![result on GitHub]()
Я надеюсь, что это сработает и для вас! В моем случае он работает с каждым удаленным репозиторием git.
Пожалуйста, свяжитесь со мной по twitter, если что-то неясно или написано на плохом английском языке
Ответ 2
Я успешно это сделал, используя ssh-соединение (которое выглядит как [email protected]:<username>/<project>.git
). Он аутентифицирует пользователя на основе открытого ключа SSH, который вы можете создать в командной строке - много документов об этом в github в разделе "Справка".
Ответ 3
Xcode 6.2 (и, возможно, 6.x) изменил ситуацию. В организаторе больше нет вкладки "Хранилища". Здесь, как это сделать с новыми Xcodes.
Чтобы добавить проект в локальный репозиторий git к GitHub, это то, что вы делаете:
- Перейдите в меню "Управление источником", выберите проект и выберите "Настроить":
![enter image description here]()
- Вы увидите:
![enter image description here]()
- Выберите вкладку "Дистанция" и нажмите "+" в левом нижнем углу. Выберите "Добавить удаленный доступ".
![enter image description here]()
- Введите имя для удаленного репозитория и введите URL-адрес для удаленного репозитория. Убедитесь, что вы создали этот удаленный репозиторий уже, и если в GitHub make, вы указываете, что это уже существующий проект, а не новый.
![enter image description here]()
- Ты почти готов. Перейдите в меню "Управление источником" и выберите "Push". Затем вы увидите имя репо, которое вы использовали на последнем этапе, что-то вроде "simpleest/master"; нажмите кнопку.
Готово.