En XCode 4 ¿cómo agrego un repositorio GitHub remoto a un proyecto local existente?


La integración de Git en XCode 4 es muy bienvenida, sin embargo, parece ser un poco descabellada cuando se trata de lidiar con repositorios remotos. Para mayor claridad estoy usando OS X versión 10.6.7 y XCode 4.0.2 (4A2002a).

Si creo un nuevo proyecto XCode 4 y acepto la opción de crear un repositorio Git local, todo está bien. Puedo comprometerme localmente y eso es genial.

Cuando quiero enviar el nuevo proyecto a GitHub quiero agregar un repositorio remoto y enviar mis cambios locales a GitHub. Me puede agregar un repositorio GitHub a XCode 4 como un nuevo Repositorio en la ventana del Organizador, pero no hay ningún método para configurarlo como un repositorio remoto para mi proyecto existente.

Así que cambié a usar comandos git en Terminal.

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

Si vuelvo a XCode 4 e intento usar

File -> Source Control -> Push...

Luego el Elige el repositorio al que enviar los cambios. aparece el diálogo listando el repositorio remoto origin. Hay un indicador amarillo que dice que se requiere autenticación, lo cual está bien, ya que aún no he podido ingresar mis credenciales para HTTPS. Sin embargo, cuando hago clic en 'Push' y trata de empujar los cambios, dice "La operación no se pudo realizar porque el acceso al repositorio 'origin' está denegado."

Un diálogo que me pide mi nombre de usuario y contraseña aparece con mi pre-rellenado por lo que debe estar leyendo esto correctamente desde la configuración del repositorio local.

Cuando ingrese mi contraseña XCode 4 y luego se bloquea con el siguiente error

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 reinicio XCode, se ha agregado un repositorio origin al navegador de Repositorios en Organizer y puedo ver la rama maestra en GitHub, así que sé que las credenciales son correctas sin que cambie nada.

¿Alguien ha encontrado una forma confiable de usar XCode 4 con GitHub comenzando con un proyecto local primero?

Si clono un repositorio GitHub existente con un proyecto XCode en él, ábrelo con XCode 4, a pesar de que el primer empujón parece fallar, el segundo empujón entonces funcionó. Así que tal vez comenzar desde cero con XCode 4 crear el repositorio para mí no es el mejor patrón (hasta que mejoren las herramientas de Git en una versión posterior de XCode 4).

EDITAR CON MÁS DETALLES DE UNA SOLUCIÓN

Este ejemplo solo se aplica al primer proyecto que estás agregando a un repositorio de GitHub. Como tal, creo que está mejor con los siguientes pasos, teniendo en cuenta todavía parece haber algunos 'gotchas' de XCode en esta solución.

  1. List item
  2. 'Conectar a un repositorio' desde el diálogo de Bienvenida a XCode.
  3. Use la URL SSH de GitHub para la ubicación
  4. , Darle un nombre (RepositoryName)y Clonar a un directorio
  5. el 1er intento parece fallar a pesar de que el contenido se descarga
  6. Inténtalo de nuevo y funciona.
  7. Ahora hay un nuevo repositorio definido en la ventana del Organizador con su origen establecido en URL remota de GitHub SSH.
  8. Cree un Nuevo Proyecto dentro del directorio en el que acaba de clonar, pero NO marque la opción 'Crear repositorio git local para este proyecto'.
  9. Hacer commit inicial en el repositorio Git local.
  10. Intente Source Control -> Push y XCode 4 falla con 'La operación no se pudo realizar porque el acceso al repositorio RepositoryName fue denegado. Comprobar nombre de usuario y contraseña'
  11. Pruebe el Control de código fuente - > Push y XCode 4 aparece el control remoto Diálogo de repositorio de nuevo pero esta vez ha detectado un repositorio remoto llamado origin . Al lado hay una bola amarilla y 'Autenticación requerida'.
  12. Al hacer clic en 'Push' de nuevo, el Push remoto funcionó.

Una cosa que he visto y no he logrado resolver todavía es que los mensajes de respuesta de GitHub con el valor de hash de checkin y cualquier mensaje parecen ser reportados en XCODE Log navigator como errores de Push, a pesar de que el Push es exitoso hasta ahora en lo que respecta a GitHub.

¿Alguien más tiene una mejor solución?

Author: jbjon, 2011-04-27

3 answers

¡Creo que he encontrado la forma de Xcode de enviar un proyecto existente a GitHub o a cualquier otro repositorio remoto!

Condiciones previas

  • Asumo que tienes un proyecto creado por Xcode 4 con un repositorio git local.
  • Ha creado un repositorio git remoto vacío (lo llamo RemoteRepository en el siguiente ejemplo)

Empujarlo a control remoto

  1. Abra el Organizer en Xcode y vaya a los Repositorios tab

  2. Primero haga clic en Controles remotos y luego en "Agregar control remoto"

    Organizador Xcode

  3. Introduzca un Nombre remoto y la Ubicación de su repositorio remoto y haga clic en crear

    Agregar un diálogo remoto

  4. Luego selecciona tu proyecto y abre File -> Source Control -> Push ...

    abrir diálogo de inserción

  5. Seleccione su repositorio remoto y espere hasta que sea conectable! Buscar el Crear en el corchete.

    diálogo de inserción

  6. Ahora tu antiguo proyecto se publica en GitHub

    resultado en GitHub

Espero que funcione para usted también! En mi caso funciona con todos los repositorios remotos de git.

Por favor, póngase en contacto conmigo en twitter si algo no está claro o escrito en mal inglés!

 88
Author: Tim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-15 09:13:51

He hecho esto con éxito usando una conexión ssh (que se parece a [email protected]:<username>/<project>.git). Autentica al usuario basándose en una clave pública SSH, que puede generar en la línea de comandos lots muchos documentos sobre eso en github en la sección "ayuda".

 2
Author: Dan Ray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-27 12:13:05

Xcode 6.2 (y posiblemente 6.x) cambió las cosas. Ya no hay una pestaña Repositorios en el Organizador. He aquí cómo hacerlo con los nuevos Xcodes.

Para agregar un proyecto con un repositorio git local a GitHub, esto es lo que haces:

  1. Vaya al menú Control de código fuente, elija su proyecto y seleccione Configurar:

introduzca la descripción de la imagen aquí

  1. Verás:

introduzca la descripción de la imagen aquí

  1. Seleccione la pestaña Controles remotos y presione el "+" en la esquina inferior izquierda. Seleccione Agregar Control Remoto.

introduzca la descripción de la imagen aquí

  1. Escriba un nombre para el repositorio remoto y escriba la URL de su repositorio remoto. Asegúrese de que ya ha creado este repositorio remoto, y si en GitHub, make are especifica que este es un proyecto existente, y no uno nuevo.

introduzca la descripción de la imagen aquí

  1. Ya casi has terminado. Vaya al menú Control de código fuente y seleccione Push. A continuación, verá el nombre del repositorio que utilizó en el último paso, algo como "simplest / master"; pulse el pulsador.

Hecho.

 2
Author: mahboudz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-09 06:10:04