ultimo salir revertir modificar descartar commits comentario cambios cambiar archivo git commit

revertir - salir de git commit



Error de Git en la confirmación después de la combinación-fatal: no se puede realizar una confirmación parcial durante una combinación (13)

Corrí un git pull que terminó en un conflicto. Resolví el conflicto y todo está bien ahora (también usé mergetool).

Cuando git commit file.php -m "message" el archivo resuelto con git commit file.php -m "message" el error:

fatal: cannot do a partial commit during a merge.

Tuve el mismo problema antes y usar -a in commit funcionó perfectamente. Creo que no es la manera perfecta porque no quiero cometer todos los cambios. Quiero cometer archivos por separado con comentarios separados. ¿Cómo puedo hacer eso? ¿Por qué git no permite a los usuarios enviar archivos por separado después de una fusión? No pude encontrar una respuesta satisfactoria a este problema.


Como dice el mensaje de error, no puede realizar una confirmación parcial después de una fusión. En lugar de cometer solo file.php , debe confirmar todos los cambios.

Esto debería funcionar.

git commit -m "Fixing merge"


Durante una fusión, Git desea realizar un seguimiento de las ramas principales por todo tipo de razones. Lo que quieres hacer no es una fusión como lo ve git. Es probable que desees hacer una rebase o una selección desde cero manualmente.


Encontré que agregar "-i" al comando commit soluciona este problema para mí. El -i básicamente le dice que prepare archivos adicionales antes de cometer. Es decir:

git commit -i myfile.php


Obtuve esto cuando olvidé el -m en mi git commit al resolver un conflicto de fusión de git.

git commit "commit message"

debiera ser

git commit -m "commit message"


Para mí, esto sucedió en SourceTree cuando intenté cometer una fusión antes de resolver todos los archivos. Luego marcé el último archivo resuelto y aún así me dio este error cuando intentaba confirmar. Cerré SourceTree y lo volví a abrir, y luego cometió una multa.


Probablemente tienes un conflicto en algo que no has preparado para cometer. git no te permitirá cometer cosas de forma independiente (porque todo es parte de la fusión, supongo), por lo que necesitas git add ese archivo y luego git commit -m "Merge conflict resolution" . La bandera -i para git commit hace el agregado por ti.


Puedes usar git commit -i para la mayoría de los casos, pero en caso de que no funcione

Necesitas hacer git commit -m "your_merge_message" . Durante un conflicto de fusión, no puede combinar un solo archivo, por lo que necesita

  1. Escenario solo el archivo en conflicto ( git add your_file.txt )
  2. git commit -m "your_merge_message"

Si está en el Árbol de origen , deberíamos marcar explícitamente un archivo como resuelto después de que se resuelvan los conflictos. Seleccione el archivo que se resolvió sin conflictos. Luego Acciones -> Resolver conflictos -> Marcar resueltos . Si tiene varios archivos, haga lo mismo para todos. Comprometete ahora.


Si solo desea deshacerse de todos los archivos de picking y commit en cualquier conjunto que desee,

git reset --soft <ID-OF-THE-LAST-COMMIT>

te lleva allí.

Lo que hace el reinicio por software es mover el puntero que apunta a la CABEZA actual a la confirmación (ish) que dio, pero no altera los archivos. El restablecimiento completo movería el puntero y también revertiría todos los archivos al estado en el que se confirmó (ish). Esto significa que con el reinicio por software puede borrar el estado de combinación pero mantener los cambios en los archivos reales y luego confirmarlos o restablecerlos individualmente según sus preferencias.


Tu fusión se detuvo en medio de la acción. Debes agregar tus archivos y luego ''git commit'':

git add file_1.php file_2.php file_3.php git commit

Aclamaciones


git commit -i -m ''merge message'' no funcionó para mí. Decía:

fatal: No paths with --include/--only does not make sense.

FWIW, llegué aquí a través de esta pregunta relacionada porque estaba recibiendo este mensaje:

fatal: You have not concluded your merge (MERGE_HEAD exists).

También probé mergetool, que decía: No files need merging . ¡Muy confuso! ¿Entonces el MERGE_HEAD no está en un archivo que necesita fusionarse?

Finalmente, utilicé este truco para agregar solo los archivos modificados (no quería agregar todos los archivos en mi árbol, ya que tengo algunos que quiero mantener sin seguimiento):

git ls-files -m | xargs git add

Entonces finalmente (!) Pude comprometerme y subir. Seguro que sería bueno si Git te diera mejores pistas sobre qué hacer en estas situaciones.


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 aparecían 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.

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 corrupción corrupta aparecían como cambios que hice y que se prepararon para un compromiso.

Sin embargo, al tratar de confirmar, recibí el mismo error "fatal: no se puede realizar una confirmación parcial durante la 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 hayan actualizado 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, que es en parte la razón por la que estoy publicando esto.

Esta es una respuesta duplicada a la pregunta duplicada ya que: Error en la fusión de Xcode Git está atascado


git commit -am ''Conflicts resolved''

Esto funcionó para mí. Puedes probar esto también.