2012-03-14 17 views
11

git rebase deja los marcadores de conflicto alineados en los archivos; algo así como:¿Puede aplicar git dejar marcadores de conflicto en línea como git rebase?

<<<<<<< HEAD 
Whatever line + context is different from the previous commit 
======= 
Whatever line + context is different from the commit being applied 
>>>>>>> new version, new branch:app/views/common/version.txt 

Cuando uso git aplicará a aplicar un parche creado con git formato de parche, no será capaz de dejar los archivos modificados por defecto. Puedo darle --reject, lo que hará que cree archivos .rej para aquellos que tienen conflictos irresolubles, pero en realidad, quiero que modifique los archivos y deje cada uno en el estado que git rebase lo hace, así que puedo simplemente abrir el archivo, fusionarlo manualmente, y luego agregarlo y decirle a git apply para continuar. ¿Hay alguna forma de hacer esto que yo no sepa?

Respuesta

6

Para mí las siguientes obras:

git init 
seq 1 30 > file 
git add file 
git commit -m 1-30 
sed -i '13a13.4' file 
git commit -m 'add 13.4' file 
git format-patch -1 
git reset --hard HEAD^ 
sed -i 13d file 
git commit -m 'remove 13' file 
git am -3 0001-add-13.4.patch 

Después de eso file tiene marcas de conflicto. Es decir, use git am -3 en lugar de git apply.

+0

Hmmm - interesante que parece que en efecto hacer lo que estoy queriendo. Pensé que git am use git apply - quizás utiliza una API interna a la que no se puede acceder a través de las opciones de línea de comandos de git apply. ¡Gracias! – kcstrom

3

Use la opción con tres vías de fusión:

git apply -3 0001-patch.patch