Intenté fusionar un archivo en la línea de comandos usando Git, cuando apareció un mensaje de error que me decía que la fusión se había cancelado.
Pensé que eso era el final, pero luego me di cuenta de que hay gitmarks en mis archivos. Al igual que:
start =
expression
validchar =
[0-9a-zA-Z_?!+\-=@#$%^&*/.]
integer =
<<<<<<< HEAD
digits:[0-9]+
{ return digits.join(""); }
=======
sign:"-"* digits:[0-9]+
{ return sign + digits.join(""); }
>>>>>>> gh-pages
Los archivos no han sido editados por mí y muestran líneas insertadas con:
- HEAD después de menos que signos (
<<<<<<< HEAD
) - líneas de código cambiado
- una cadena de signos iguales
=======
) - la nueva versión del código
- otra línea que comienza con signos mayores que y el nombre de la rama (
>>>>>>> gh-pages
)
Lo peor es que el contenido del archivo ya no está en orden. ¿Alguien sabe cómo puedo hacer que esos archivos vuelvan a la normalidad y los cambios que hice en la rama gh se fusionaron con la rama maestra?
fuente
gh-pages
versión, por lo que simplemente eliminaría las cosas de<<<<<<
a======
y también eliminaría la>>>>>>
línea única , dejando las dos líneas de código real entre=======
y>>>>>>
.Absolutamente comienza con 'git status' para ver lo que tienes. Si abortó una combinación (o tuvo una combinación abortada) y tiene archivos en conflicto en el directorio de trabajo, entonces algo salió mal. El estado de Git le dirá dónde se encuentra. Después de eso, tiene varias opciones. Debe resolver el compromiso de fusión a mano, lo que puede ser un desafío, o usando una herramienta como:
La herramienta de combinación funcionará si sus archivos se enumeran como que necesitan una combinación.
También puede realizar uno de:
Puede ver las diferentes versiones usando la sintaxis: 1: nombre de archivo. Ver aqui para obtener una explicación. Pero todo lo anterior asume que 'git status' muestra que los archivos necesitan una combinación.
Finalmente, siempre tienes la opción de:
fuente
git status
apoyar el consejo de "empezar con para ver lo que tienes": es fascinante en algunos círculos culpar a Git por su complejidad imaginaria, pero de hecho, una lectura cuidadosa del resultado degit status
es suficiente para entender qué hacer a continuación. en situaciones más comunes. Por lo tanto, realmente: si algo sale mal, deténgase, leagit status
, piense.Todas las respuestas son correctas, pero si desea eliminar automáticamente todas las marcas de conflicto y desea autocambiar los archivos para mantener HEAD, entonces puede crear su propio script bash como: -
Ejemplo de guión:
# vim /usr/sbin/solve.git
(Anexar lo siguiente)
# chmod 755 /usr/sbin/solve.git
y simplemente ejecútelo en su repositorio / ruta GIT para resolver:
$ cd <path_to_repo>
$ solve.git
Aviso: - Las extensiones de archivo mencionadas anteriormente son php, css, js, html, svg y txt.
fuente
En Atom tuve el problema de que algunos archivos no guardaban los conflictos de fusión resueltos en la unidad, así que tuve que hacer clic manualmente en "guardar". Me tomó bastante tiempo averiguarlo.
fuente
Vengo de esta pregunta . Y quería algún método automatizado para fusionar los archivos medio fusionados, en lugar de editar manualmente los archivos ( como se sugiere en otras respuestas, lo cual no me siento cómodo haciendo ). Así que esto es lo que terminé haciendo a través de netbeans, pero también se puede hacer a través de la línea de comandos.
Ahora, tenga en cuenta que esto solo funciona si inmediatamente después del
merge->add->commit
, se dio cuenta de que cometió un error y desea volver a pasar por el proceso.PASO 1: Restablecer a una confirmación anterior.
PASO 2: Vuelva a intentar fusionar la rama
En este punto, se le solicitará la ventana de combinación si está utilizando una GUI. y luego puede proceder normalmente.
fuente