2012-08-28 14 views
14

Tengo 2 ramas, master y newfeature. Cuando quiero fusionar newfeature en master, he utilizado:Combinar conflicto en .gitignore

git checkout master 
git merge newfeature 

me sale el error:

Auto-merging .gitignore 
CONFLICT (content): Merge conflict in .gitignore 
Automatic merge failed; fix conflicts and then commit the result. 

abrí .gitignore y parece un lío ahora con la última parte del archivo en busca como

<<<<<<< HEAD 
public/img/ignore 
======= 
public/img/profiles 
public/blog 
public/recommendation 
>>>>>>> newfeature 

lo que pasó, y como si esto se fija de modo que pueda fusionar la rama en el master?

Respuesta

16

Has editado .gitignore en ambas ramas. Ahora, git no está seguro de qué líneas de cada copia son las correctas, por lo que te pide que las resuelvas.

Las líneas:

<<<<<<< HEAD 
public/img/ignore 
======= 

son lo que aparece en la copia del archivo en el maestro.

Y

======= 
public/img/profiles 
public/blog 
public/recommendation 
>>>>>>> newfeature 

en el newfeature rama

Usted sólo debe tener que editar el archivo como le gustaría que apareciera finalmente. Entonces...

git add .gitignore 
git commit 
1

Utilice git mergetool para resolver el conflicto (o simplemente solucione el problema manualmente, este no es un caso particularmente difícil de resolver), luego vuelva a realizar la confirmación.

1

Fijar los conflictos en el archivo .gitignore, añadir la versión actualizada y luego comprometerse:

vim .gitignore 
# assuming you want all 4 lines: simply remove the conflict markers (<<<<<<, ======, and >>>>>) 
git add .gitignore 
git commit 
6

Simplemente edite .gitignore archivo para resolver conflicto:

Antes

<<<<<<< HEAD 
public/img/ignore 
======= 
public/img/profiles 
public/blog 
public/recommendation 
>>>>>>> newfeature 

Después

public/img/ignore 
public/img/profiles 
public/blog 
public/recommendation 

continuación:

git add .gitignore

git commit

Mensaje de confirmación generado automáticamente debe aparecer, acéptelo (guarde & cierre) y listo.

2

Lo que pasa es que había un conflicto de combinación: dos ramas cambiaron el archivo "al mismo tiempo", en corrientes distintas. Puede ver los cambios que otra rama ha realizado en la sección "novedad" y el otro en la sección CABEZA.

Lo que necesita hacer es editar ese archivo para que contenga los contenidos que desea, agregue eso a seguir y luego confirme eso. Esto se conoce como una fusión de compromiso.

Ahora, lo que dije anteriormente es hacer una fusión a mano, "manualmente". Es posiblemente el más fácil de entender. También puede usar el comando git mergetool para hacer eso con una herramienta visual, si está configurada, o usar "combinación de git" con alguna estrategia que le indique cómo manejar el conflicto.

1

La combinación automática de Git ha fallado. Esto generalmente ocurre cuando se producen cambios en el mismo archivo al mismo tiempo en diferentes sucursales/repositorios cuando se intenta fusionar ramas/contenido de inserción.

Las modificaciones realizadas en .gitignore en la rama de nuevas características se conflitan con la hecha en el maestro. La línea: <<<<<<< HEAD indica las modificaciones realizadas en el maestro, que siguen esta línea, mientras que la línea >>>>>>> newfeature indica las modificaciones realizadas en la novedad, que preceden a esta línea. Las dos modificaciones están separadas por =======.

Debe editar manualmente el archivo y mantener/fusionar lo que es útil en cada una de las dos partes. Luego debe confirmar (después de eliminar las líneas <<<<HEAD, ===== y >>>newfeature).