2011-01-11 9 views
34

Quiero fusionar todos los archivos manualmente con meld o cualquier otra herramienta de diferenciación, ¿cómo puedo hacer esto con Git?
Cuando ejecuto git mergetool dice no files need merging. Entonces, supongo que puedo hacerlo solo si tengo conflictos.¿Cómo combinar todos los archivos manualmente en Git?

+0

Favor proporcionar algún contexto de lo que * * que desea combinar y por qué * * se no quiero que esto se haga automáticamente – Johnsyweb

+0

Quiero fusionar archivos de texto :) Solía ​​mezclar manualmente mercurial y me gusta ver 3 archivos simultáneamente, si algo sale mal, siempre puedo editarlos todos – gennad

+0

Quiere fusionar diferentes archivos de texto de diferentes revisiones de la misma ¿Archivo de texto? ¿Cómo se relacionan estos archivos con git? – Johnsyweb

Respuesta

-15

¿Por qué desea combinar manualmente?

Si desea aplicar cambios selectivos, intente utilizar una herramienta diff entre el archivo en dos ramas, aplique los cambios que desee y luego asigne este archivo "fusionado" como normalmente.

+7

Esto es exactamente para lo que mergetool es bueno. ¿No hay una manera de permitirte hacer esto * independientemente de si hay conflictos? No siempre es el caso que la combinación automática de git resulta en código (o texto) que es correcto, y una vez que se fusiona no es trivial para detectar si se introdujeron inconsistencias sutiles. – James

+1

Si desea algunos cambios, pero no todos, de una sucursal por el motivo que sea. Podría ser cualquier cosa, realmente. –

+1

No tengo idea de por qué esta es la respuesta aceptada – nick

6

Nota, si insiste en fusionarse manualmente (quizás para cierta clase de archivos), aún puede definir un controlador de combinación .
Tiene un ejemplo concreto en "Git - how to force merge conflict and manual merge on selected file".

De esta manera, la secuencia de comandos del controlador de combinación puede llamar a cualquier herramienta de fusión que desee.

69

Hay manera mucho más simple:

git merge --no-commit merge_branch

Como hombre dice:

Con --no-commit realizar la combinación, pero pretende la fusión fallida y hacer no confirmación automática, para dar la el usuario tiene la oportunidad de inspeccionar y modificar aún más el resultado de la fusión antes de confirmar.

+3

Gracias. ¿Hay quizás una forma de usar mergetool/meld para revisar y combinar los cambios por partes con una buena interfaz de tres vías? – James

+4

Al agregar '--no-ff', el reenvío rápido está desactivado, lo que sucederá si no hay conflictos. –

10

Una pregunta similar es How to prevent an automerge using git?

FractalSpace dio una respuesta que creo útil:

$ git checkout master 
$ git difftool -t kdiff3 local-branch HEAD 

La idea es usar difftools en lugar de herramientas de auto-fusión para recoger manualmente lo que necesita y crear nuevos archivos.

19

que tenían un escenario en el que:

git merge --no-commit merge_branch 

solo causó un avance rápido.

Si esto sucede, usted puede utilizar:

git merge --no-commit --no-ff merge_branch 

y luego podrás revisar sus cambios

+0

¿Es posible tirar de la misma manera? Necesito verificar TODOS los conflictos manualmente si el avance rápido no es posible. – Maxim

Cuestiones relacionadas