2011-12-13 18 views
18

Yo solía trabajar con 3 vías combinar herramientas como BC3, SourceGear, o P4 que por lo general muestran 4 componentes: base de, dejó, derecho, y se fusionó resultado.Git 4 vías fusionar

Lo Git parece hacer, y con razón, sobre todo en los casos de una git rebase --onto parece ser una combinación de 4 vías: izquierda-base, izquierda, derecho de base, derecho, resultado combinado. O, en otras palabras, tomando el parche de diff hecho en el lado izquierdo (local) e intentando fusionarlo con un parche de diff hecho en el lado derecho (remoto).

combinada = Izquierda-Diff-Path + Derecha-Diff-Path

usted sabría cualquier buena herramienta que muestra los 4 componentes si hay algún tipo de apoyo hoy en día?

Respuesta

2

No creo que exista. Siempre escuché que BC3 y P4Merge fueron los mejores.

+0

¿Puede ofrecer alguna aclaración sobre cómo P4Merge, por ejemplo, podría utilizarse para combinar 4 versiones de archivos como se describe en la pregunta, si eso es posible? Me parece que quiero fusionar los cambios en una rama en otra rama que ha sufrido sus propios cambios, ya que se ramificó desde la primera. Sé que Team Foundation Server puede hacer esto automáticamente (para la mayoría de las partes) si ingresas el código, pero quiero hacer esto antes de verificar algo en algunas ocasiones. – BlueMonkMN

+0

Eso no es lo que se preguntó. Si desea combinar 4 variaciones, puede fusionar con el pulpo 'git merge branch1 branch2 branch3 branch4'. Si obtienes conflictos, la fusión del pulpo se cancelará, no puedes resolver más de 2 versiones en conflicto. Dicho esto, puede fusionar cada uno de ellos 1 a la vez. luego aplasta todas las fusiones en la primera. Preservar lo que los padres harían trabajando en la fusión del pulpo escribiendo todos los SHA1 de las puntas de las ramas que se fusionan en líneas separadas en '.git/MERGE_HEAD'. Ahora cuando te comprometas, la confirmación que generes tendrá los 4 padres que deseas. –

+0

Después de más investigaciones, aprendí que mi comprensión de la fusión de 3 vías debe haber sido confusa, y todo lo que realmente necesitaba era una simple combinación de 3 vías en mi caso. Perdón por la confusion. Pensé que cuando tenía dos ramas, una versión de raíz común y una versión modificada de una rama que quería fusionar con la otra, necesitaba más que una combinación de 3 vías, pero no lo hice. Simplemente puedo ignorar la versión de raíz común aparentemente y las cosas funcionan muy bien en mi caso. – BlueMonkMN

2

diffuse parece estar instalado por defecto en mi estación de trabajo Fedora17; que también pasa a ser el valor por defecto de alguna manera, ya que no se especifica nada en mi .gitconfig, siendo:

git mergetool 

simplemente abre, mostrando de inmediato los archivos correctos para su edición.

Meld parece ser capaz de manejarlo también, tuve que instalarlo y se ve mejor.

+1

No estoy seguro de por qué mi respuesta es rechazada. Diffuse muestra adecuadamente combinaciones de 4 vías. Añadiendo Meld también. – Sanne

+2

¿Hay alguna posibilidad de una captura de pantalla que muestre un diff/merge de 4 vías? Solo he visto diffuse/meld hacer dos sentidos. –

+1

Ok, parece que 'diffuse' * will * hará una forma arbitraria diff, pero solo en archivos individuales. –

Cuestiones relacionadas