2012-06-28 11 views
6

Cuando fusiono grandes cambios, git a menudo se confunde irremediablemente porque no usa suficientes líneas de contexto. Que se mezcla entre las terminaciones de aspecto similar de dos subrutinas diferentes que tanto sucederá a terminar con:En git, ¿cómo puedo aumentar el contexto para las fusiones?

. 
return 1; 
. 
} 

(puntos utilizados para representar las líneas en blanco)

Cuando uso 'git diff', me puede decir -U20 para ver 20 líneas de contexto. Pero, ¿puedo decirle a git que use esta bandera cuando se fusione también?

Podría ser la respuesta relacionada con las estrategias de fusionar/opciones, tales como:

git merge -s recursive -X patience [branch] 
+0

Pregunta relacionada sobre paciencia diff: http://stackoverflow.com/questions/4045017/what-is-git-diff-patience-for –

Respuesta

4

A lo mejor de mi conocimiento, no hay manera de aumentar las líneas de contexto durante una fusión. El algoritmo paciencia paciencia diff se supone que maneja mejor su caso de uso. El git-fusión (1) página de manual describe así:

Con esta opción, fusión recursiva pasa un poco de tiempo extra para evitar mismerges que a veces se producen debido a la poca importancia líneas coincidentes (por ejemplo, los apoyos de distinta funciones). Use este cuando las ramas que se fusionarán se hayan desviado violentamente.

Dado que esto se ve exactamente como la situación que está describiendo, la paciencia parece personalizada para ayudarlo. Puede probarlo en una rama de usar y tirar, así:

git checkout -b temp_merge_branch master 
git merge --strategy-option=patience other_branch 

Si la fusión funciona limpiamente, puede avanzar rápidamente con su oficina principal con los resultados. Si no, puedes descartar la rama temporal y buscar otras alternativas.

4

Usar esta configuración para conseguir diffs paciencia con cinco líneas de contexto por todas partes:

git config --global diff.algorithm patience 
git config --global diff.context 5 

Si utiliza --color-words menudo, esto es útil, así:

git config --global diff.wordRegex '[A-z0-9_]+|[^[:space:]]' 

El primer ajuste requiere Git 1.8.2.

+1

Para temporizadores uno puede usar 'git -c diff.context = 5 merge - Xpatience ' –

Cuestiones relacionadas