xcode git conflict

Falló Xcode Git Merge está atascado



conflict (6)

Abra el terminal y haga uso de lo siguiente:

Para encontrar que archivos tiene conflictos: git status

Para fusionar y solucionar conflictos git mergetool

Es posible que necesite agregar algunos archivos sin seguimiento: git add .

Finalmente cometer cambios git commit

Tenemos un proyecto basado en git con un amigo y una rama principal. Hizo algunos cambios en algunos archivos, yo hice cambios en algunos otros archivos, y es probable que nosotros hagamos cambios en algunos de los mismos archivos. Se comprometió y empujó todos sus cambios al repositorio. Luego fui y cometí mis cambios y traté de sacar sus cambios. Me presentaron algunos conflictos que resolví en su mayoría a favor de sus cambios porque eran archivos que no cambié. Luego, cuando traté de presionar, obtuve un error fatal: no puedo hacer una confirmación parcial durante una fusión.

Estas son las pantallas que recibo.

¿Que puedo hacer? El proyecto funciona bien, excepto que el menú principal del juego no muestra las imágenes a las que se supone que debe hacer, cuáles son en las que estaba trabajando y los archivos de clase en los que trabajó, aparte de un par de otros.


Cuando tengo problemas con XCode, simplemente vuelvo a AppCode (versión de prueba si es necesario) y realizo una confirmación desde la carpeta del proyecto de nivel superior.

AppCode detecta el escenario de fusión y resuelve el problema con la fusión parcial. Del mismo modo, si AppCode no puede solucionarlo, uso Github Desktop. Solo si todo esto falla, volveré a los comandos de bajo nivel.


Esta es una situación frustrante común:

  1. Abre la terminal
  2. Vaya a la carpeta de repositorio de su proyecto (la que contiene el archivo oculto .git)
  3. Mueva su cabeza de combinación a un lado escribiendo mv .git/MERGE_HEAD .git/MERGE_HEAD_STUCK

Su problema ya debería estar medio resuelto, en algunos casos, necesita hacer un tirón desde el organizador:

  1. Abra el Organizador - Repositorios "Archivo> control de origen> repositorios ..."
  2. Encuentra el repositorio de tu proyecto y haz una extracción desde aquí.

Entonces deberías poder usar Git nuevamente desde Xcode, probablemente tendrás que resolver algunos conflictos de combinación, pero al menos esto estará bajo Xcode y no en el terminal.

Nota: Considere eliminar las .DS_Stores de su repositorio git


No puede comprometerse hasta que se resuelvan todos los conflictos de fusión. Según lo que describió, hay archivos que ambos cambiaron. Son conflictos que debes resolver.

Nunca he resuelto un conflicto en Xcode. Siempre se puede resolver el conflicto desde la aplicación Terminal. Una vez en un terminal y suponiendo que ha instalado las herramientas de línea de comandos de Xcode, intente:

git mergetool git commit

Aparecerá / debería aparecer una ventana FileMerge que le permite seleccionar su edición o la suya. La otra opción que tiene de la Terminal es resolver los conflictos simplemente aceptando sus cambios. Esto romperá su código, pero puede volver y corregirlo. Para ese intento:

git status git checkout --theirs -- /path/to/a/conflicted/file ... git add -- /path/to/a/conflicted/file ... git commit

Luego edita los archivos para arreglar tu funcionalidad. Una vez que se hayan resuelto todos los conflictos, podrá volver a confirmar en Xcode.


Resolví esto con un enfoque completamente diferente, utilizando solo el control de código fuente de Xcode.

Antecedentes: otro equipo introdujo cambios en el repositorio remoto de Git (a través de Beanstalk). En mi extremo, los archivos .xcodeproj aparecieron en un directorio diferente, y los cambios no se llevaron a cabo. Más tarde, cuando intenté comprometerme, recibí un error de Conflicto de árbol en Xcode.
Captura de pantalla del conflicto de árboles

Siendo casi imposible de corregir utilizando Xcode, reemplacé el archivo .xcodeproj con una versión descargada del servidor Git. El resultado ... el proyecto Xcode pareció aclararse, sin embargo, todas las actualizaciones de la tirada corrupta aparecían como cambios que hice y que se prepararon para un compromiso. Mire todos estos Mods y archivos agregados. Sin embargo, cuando intenté confirmar, recibí el mismo error "fatal: no se puede realizar una confirmación parcial durante una fusión", que se explica aquí.

Aquí es cómo resolví el problema ... (Ahora, comprenda que soy un programador novato, así que podría faltar algo de comprensión ... pero mi ignorancia me llevó a encontrar otra forma de hacer esto). Primero, cloné a mi maestro Ramifique en una rama secundaria y cambie a esa rama. Luego creé una copia de trabajo y coloqué el directorio en esa copia de trabajo fuera del directorio del proyecto original. (No sé si esto fue necesario, pero es lo que hice cuando leí otras técnicas de solución de problemas). Luego cambié las ramas al maestro, donde me di cuenta de que todos mis archivos de Fase (cambios a Confirmar) habían desaparecido. Para asegurarme de que todos los archivos se actualizaron a los últimos cambios realizados por la otra parte, creé una nueva rama llamada ThirdBranch, que duplicaba todos los archivos, la empujé al servidor Git y dejé que Beanstalk comparara la versión de mi servidor de la rama maestra con la La rama de ThirdBrach que acabo de empujar (línea por línea), y todos los cambios por parte de la otra parte estaban presentes en mi Xcode. Esto significaba que mi repositorio principal y el repositorio principal de Git eran los mismos, lo que comprueba que resolví el problema utilizando Xcode, solo.

No me preguntes cómo, más allá de lo que acabo de describir ... y ciertamente rellenar los huecos que dejé fuera. Soy nuevo en esto y no entiendo todo. Tal vez un programador experimentado pueda separar la información irrelevante de la relevante y recrear esta técnica más claramente, lo cual es en parte la razón por la que estoy publicando esto.


Xcode tiene problemas con los archivos xcuserdata y tuve que descartar los cambios y volver a comprometerme