Casi todos los sistemas de control de versiones tienen opciones de ramificación. Pero Git es conocido por sus rápidas capacidades de ramificación. Las ramas de Git son ligeras. Por lo tanto, las penalizaciones de rendimiento por ramificación son mínimas y se anima a los equipos de desarrollo a ramificarse y fusionarse tanto como sea posible. Pero cuando trabaja con varias ramas, es importante poder comparar y contrastar las diferencias. En este tutorial, pasaremos por un flujo de trabajo para ver cómo podemos comparar varias ramas y confirmaciones.Primero configuremos la siguiente situación:
C00 => C01 => C03 => C06 (maestro)
\
C02 => C04 => C05 (desarrollo)
Se tomaron los siguientes pasos:
- C00: Añadido hello_world.py (rama maestra)
- - Creó la rama de desarrollo
- C01: hello_world modificado.py para agregar un segundo hola (rama maestra)
- C02: hello_world modificado.py para agregar la rama de desarrollo dice Hola (rama de desarrollo)
- C03: Léame agregado.txt (rama maestra)
- C04: hello_world modificado.py para agregar la rama de desarrollo dice Hola de nuevo (rama de desarrollo)
- C05: Información agregada.txt (rama de desarrollo)
- C06: Léame modificado.txt para agregar una segunda línea (rama maestra)
Después de todas las confirmaciones, la rama 'maestra' tiene los siguientes archivos:
Hola Mundo.py
léame.TXT
Y la rama de 'desarrollo' tiene los siguientes archivos:
Hola Mundo.py
info.TXT
Comparando las cabezas de dos ramas
Puede usar el nombre de las ramas para comparar las cabezas de dos ramas:
$ git diff master ... desarrollodiff --git a / hello_world.py b / hello_world.py
índice e27f806… 3899ed3 100644
--- a / hello_world.py
+++ b / hello_world.py
@@ -2,7 +2,7 @@
def principal ():
print ("Primer saludo!")
- print ("Segundo saludo!")
-
+ print ("La rama de desarrollo dice Hola")
+ print ("La rama de desarrollo dice Hola de nuevo")
if __name__ == "__main__":
principal()
diff --git a / info.txt b / info.TXT
nuevo modo de archivo 100644
índice 0000000… 0ab52fd
--- / dev / null
+++ b / info.TXT
@@ -0,0 +1 @@
+Nueva información
diff --git a / readme.txt b / readme.TXT
modo de archivo eliminado 100644
índice e29c296… 0000000
--- a / readme.TXT
+++ / dev / null
@@ -1,2 +0,0 @@
-1 Primera línea del archivo Léame.TXT
-2 Segunda línea del archivo Léame.TXT
El comando diff está mirando recursivamente los cambios. Ha ejecutado las siguientes diferencias:
diff -git a / hello_world.py b / hello_world.py
diff -git a / info.txt b / info.TXT
diff -git a / readme.txt b / readme.TXT
Aquí 'a' representa la rama 'maestra' y 'b' representa la rama de desarrollo. La 'a' siempre se asigna al primer parámetro y la 'b' al segundo parámetro. / Dev / null significa que la rama no tiene el archivo.
Comparando entre confirmaciones
En nuestro ejemplo, la rama 'maestra' tiene las siguientes confirmaciones:
estado de $ gitEn el maestro de la sucursal
nada que confirmar, directorio de trabajo limpio
$ git log --en línea
caa0ddd C06: Léame modificado.txt para agregar una segunda línea (rama maestra)
efaba94 C03: Léame agregado.txt (rama maestra)
ee60eac C01: hello_world modificado.py para agregar un segundo hola (rama maestra)
22b4bf9 C00: Añadido hello_world.py (rama maestra)
La rama de desarrollo tiene las siguientes confirmaciones:
estado de $ gitSobre el desarrollo de la rama
nada que confirmar, directorio de trabajo limpio
$ git log --en línea
df3a4ee C05: Información agregada.txt (rama de desarrollo)
0f0abb8 C04: hello_world modificado.py para agregar la rama de desarrollo dice Hola de nuevo (rama de desarrollo)
3f611a0 C02: hello_world modificado.py para agregar la rama de desarrollo dice Hola (rama de desarrollo)
22b4bf9 C00: Añadido hello_world.py (rama maestra)
Supongamos que queremos comparar hello_world.py para confirmaciones C01 y C02. Puede usar los hash para comparar:
$ git diff ee60eac: hello_world.py 3f611a0: hello_world.pydiff --git a / ee60eac: hello_world.py b / 3f611a0: hello_world.py
índice e27f806… 72a178d 100644
--- a / ee60eac: hello_world.py
+++ b / 3f611a0: hello_world.py
@@ -2,7 +2,7 @@
def principal ():
print ("Primer saludo!")
- print ("Segundo saludo!")
+ print ("La rama de desarrollo dice Hola")
if __name__ == "__main__":
principal()
También puede usar el mismo principio para comparar confirmaciones dentro de la misma rama.
Herramientas de fusión visual
Ver comparaciones basadas en texto puede ser difícil. Si configura Git difftool con una aplicación de fusión visual como DiffMerge o BeyondCompare, podrá ver mejor las diferencias.
Estudio adicional:
- Documentación de Git Diff
- Documentación de Git DiffTool
- Configuración de DiffMerge con DiffTool
- Configuración de BeyondCompare con DiffTool
Referencias:
- Tutorial de Git: herramientas de fusión y diferenciación, YouTube
- http: // coding4streetcred.com / blog / post / configure-diffmerge-for-your-git-difftool
- http: // gitbaby.com / how-to-diff-one-file-to-an-arbitrary-version-in-git.html
- https: // git-scm.com / book / es / v2 / Git-Branching-Basic-Branching-and-Merging
- https: // git-scm.com / book / id / v2 / Git-Branching-Branches-in-a-Nutshell
- https: // git-scm.com / docs / git-diff
- https: // git-scm.com / docs / git-difftool
- https: // sourcegear.com / diffmerge /
- https: // sourcegear.com / diffmerge / webhelp / sec__git__linux.html
- https: // stackoverflow.com / questions / 9834689 / comparing-two-branch-in-git
- https: // veerasundar.com / blog / 2011/06 / git-tutorial-comparing-files-with-diff /
- https: // www.software de scooter.com / features.php
- https: // www.software de scooter.com / support.php?zz = kb_vcs