Resolver conflictos de fusión de Git a favor de sus cambios durante una extracción

Resuelto sanmai asked hace 12 años • 19 respuestas

¿Cómo resuelvo un conflicto de git merge a favor de cambios realizados?

Quiero eliminar todos los cambios conflictivos de un árbol de trabajo sin tener que revisar todos los conflictos git mergetooly manteniendo todos los cambios libres de conflictos. Preferiblemente quiero hacer esto mientras tiro, no después.

sanmai avatar May 22 '12 14:05 sanmai
Aceptado
git pull -s recursive -X theirs <remoterepo or other repo>

O, simplemente, para el repositorio predeterminado:

git pull -X theirs

Si ya estás en un estado de conflicto...

git checkout --ours path/to/file

Tenga en cuenta que durante git rebasey git pull --rebase, los nuestros y los de ellos pueden aparecer intercambiados; --oursproporciona la versión de la rama en la que se rebasan los cambios, mientras que --theirsproporciona la versión de la rama que contiene el trabajo que se está rebasando. git checkoutdocumentos

Pascal Fares avatar Feb 14 '2014 11:02 Pascal Fares

Puede utilizar la opción de estrategia recursiva "de ellos" :

git merge --strategy-option theirs

Del hombre :

ours
    This option forces conflicting hunks to be auto-resolved cleanly by 
    favoring our version. Changes from the other tree that do not 
    conflict with our side are reflected to the merge result.

    This should not be confused with the ours merge strategy, which does 
    not even look at what the other tree contains at all. It discards 
    everything the other tree did, declaring our history contains all that
    happened in it.

theirs
    This is opposite of ours.

Nota: como dice la página de manual, la opción de estrategia de fusión "nuestra" es muy diferente de la estrategia de fusión "nuestra" .

Ikke avatar May 22 '2012 07:05 Ikke

Si ya estás en un estado de conflicto y simplemente quieres aceptar todos los de ellos:

git checkout --theirs .
git add .

Si quieres hacer lo contrario:

git checkout --ours .
git add .

Esto es bastante drástico, así que asegúrate de querer borrar todo así antes de hacerlo.

lots-to-learn avatar Nov 06 '2015 15:11 lots-to-learn

Bien, imagina el escenario en el que me encontraba:

Intentas un merge, o tal vez un cherry-pick, y te detienes con

$ git cherry-pick 1023e24
error: could not apply 1023e24... [Commit Message]
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

Ahora, ve el archivo en conflicto y realmente no desea conservar los cambios. En mi caso anterior, el archivo entró en conflicto solo con una nueva línea que mi IDE había agregado automáticamente. Para deshacer sus cambios y aceptar los de ellos, la forma más sencilla es:

git checkout --theirs path/to/the/conflicted_file.php
git add path/to/the/conflicted_file.php

Lo contrario de esto (sobrescribir la versión entrante con su versión) es

git checkout --ours path/to/the/conflicted_file.php
git add path/to/the/conflicted_file.php

Sorprendentemente, no pude encontrar esta respuesta muy fácilmente en la Red.

Theodore R. Smith avatar Aug 01 '2014 12:08 Theodore R. Smith