2010-08-09 9 views
17

Hice git fetch y luego git pull --rebase. Está intentando fusionar los cambios de la rama remota con mi rama local. Y hay algunos conflictos de fusión. Entonces hice un git reset --hard.¿Cómo puedo capturar --rebase pero tomando todos los cambios a distancia?

Mi pregunta es ¿es posible que pida a git pull que tome el control remoto cada vez que haya un conflicto?

+0

Una vez también puede recuperar y luego reajustar manualmente (por ejemplo, 'fetch' git y' git rebase -X suyo origen/foo') – Whymarrh

Respuesta

24

creo que lo que quiere es la siguiente:

git pull --rebase -s recursive -X ours 

Pero no funciona (estoy usando 1.7.0.4), a pesar de que la página de manual dice que debería. Supongo que esto se debe al problema mentioned here.

En su lugar, se puede utilizar:

git pull -s recursive -X theirs 

Funciona como se esperaba, pero vas a obtener una combinación en lugar de un rebase .

También, tenga en cuenta 'ours', en lugar de 'theirs' cuando usamos --rebase. Desde la página de manual de git-rebase:

[CLIP] ... una fusión de rebase funciona reproduciendo cada confirmación de la rama de trabajo en la parte superior de la rama ascendente. Debido a esto, cuando ocurre un conflicto de fusión, el lado informado como el nuestro es la serie hasta ahora reestablecida, comenzando por la corriente ascendente, y la suya es la rama operativa. En otras palabras, los lados se intercambian. ... [CLIP]

+0

Si I 'git pull --rebase aguas arriba devel', ¿no sería redundante una '--strategy recursive'? La alternativa sería la estrategia de fusión del pulpo si entiendo las páginas de manual correctamente, pero solo se requiere si se combinan más de 2 sucursales. En mi caso, solo hay dos ('upstream/devel' y' /devel', '' siendo mi copia de trabajo de' fork/devel' sincronizada en Github). Por lo tanto, usaría 'git pull --rebase --strategy-option theirs' si nada habla en contra de eso? – CoDEmanX

Cuestiones relacionadas