Technology solutions that boost business performance

Contact
MX: Insurgentes Sur 318, Roma Norte
Cuauhtemoc (06700), CDMX, Mexico ARG: Juramento 1475, Piso 12, oficina 8
Belgrano (C14 28DMQ), CABA Argentina
Git

7 comandos de Git que podrían salvar su carrera de desarrollador.

Git es una de las herramientas de control de cambios más utilziadas del mundo y, a pesar de este uso generalizado aún hay comandos que están sub utilizados o se desconocen por completo. A continuación haremos una lista de 7 comandos muy útiles para el trabajo colaborativo.

1. Git add -p

Quizás usted haya utilizado muchas veces en el pasado los comandos git add <file> o git add . muchas veces en el pasado, pero ¿qué hace git add -p?

¿Alguna vez quizo hacer commit de una sección de un archivo y no el archivo completo?

El comando previamente mencionado permite hacerlo. Una vez que el comando es ejecutado, Git nos preguntará acerca los hunks, que son trozos de código identificados con cambios que se muestran y que a continuación se decidirá qué hacer con ellos.

Verás la pregunta: Stage this hunk [y, n, g, a, d, e, ?]? En la última línea de la terminal.

[your-computer:your-project$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
      (use "git add <file>..." To update what will be committed)
      (use "git checkout -- <file>..." To discard changes in working directory)

            modified:   library.js

no changes added to commit (use "git add" and/or "git commit -a")
[your-computer:your-project$ git add -p
Diff --git a/library.js b/library.js
Index 67eh3kl..908d3er 167335
--- a/library.js
+++ b/library.js
@@ -139,7 +139,7 @@
                  var prueba = "";
                  var prueba = "/img/this_is_a_test.jpg";
Stage this hunk [y,n,q,a,d,e,?]?

Las letras tienen los siguiente significados:

  • y: Utilizar este trozo de código (h)
  • n: No utilizar este trozo de código (hunk)
  • g: Seleccione un diferente trozo de Código para continuar
  • a: Utilizar este trozo de código y todos los demás trozos en este archivo
  • d: No utilzar este trozo de código ni ninguno de los otros trozos en este archivo
  • e: Editar el trozo de código actual manualmente
  • ?: Mostrar ayuda

Cuando se finaliza con todos los trozos de Código podremos ver que nuestro commit está listo y podremos continuar con el envío de los cambios.

2. git commit —amend

Cuando se realizan commits, muchas veces tecleamos enter demasiado rápido y cuando nos damos cuenta hay errores de tecleo en el mensaje del commit. ¡Esto tiene solución!

Existe un commando que permite arreglar un error de tecleo o el mensaje completo.

Digamos que escribimos el siguiente comando:

git commit -m "areglar un erorde dedo"

Para corregir este error ejecutamos lo siguiente:

git commit —amend -m "arreglar un error de dedo"

Cuando estemos listos para hacer push, nadie verá que antes hubo un error de tecleo.

[your-computer:your-project$ git commit -m "areglar un erorde dedo"
[master g7we3j2] areglar un erorde dedo
  1 file changed, 1 insertion(+), 1 deletion(-)
[your-computer:your-project$ git commit --amend -m "arreglar un error de dedo"
[master 997d098] arreglar un error de dedo
  Date: Wed Apr 22 07:57:23 2020 -0500
  1 file changed, 1 insertion(+), 1 deletion(-)
[your-computer:your-project$

3. git reset –soft HEAD~1

El comando git reset es bastante versátil, pero en esta ocasión nos referiremos a la variante –soft

Al hacer un commit y ejecutar el comando git reset –soft HEAD~1 el mensaje del commit se eliminará, por lo que si intentamos hacer push, el commit no se enviará, sin embargo los cambios hechos en los archivos seguirán ahí.

[your-computer:your-project$ git commit -m "soft prueba"
[master 8446321] soft prueba
  1 file changed, 1 insertion(+), 1 deletion(-)
[your-computer:your-project$ git reset --soft HEAD~1
[your-computer:your-project$ git push origin master
  Everything up-to-date
[your-computer:your-project$ git commit -m "soft prueba 2"
[master 9gtr34e] soft prueba 2
  1 file changed, 1 insertion(+), 1 deletion(-)
[your-computer:your-project$ git push origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done,
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 293 bytes | 293.00 KiB/s, done.
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
    67eh3kl..908d3er master -> master
[your-computer:your-project$

4. git checkout

Este commando puede ayudar cuando hay demasiados cambios en los diferentes archivos del directorio, pero no quieres subirlos todos en un solo commit, además, nos permitirá enviar los cambios de cierto archivo a una rama seleccionada.

Mientras se trabaja en la rama master podemos ejecutar el comando git checkout <branch> <file> para tomar un archivo específico en un commit y llevarlo a la rama master para integrarlo después. Es bastante útil cuando hay demasiados cambios en una rama pero sólo se necesitan los de un archivo para hacer pruebas o enviar los cambios a un pull request.

[your-computer:your-project$ git branch
   rama-b
*  master
[your-computer:your-project$ git checkout rama-b library.js
Updated 1 path from 99tr876
[your-computer:your-project$ git status
On brach master
Your branch is up to date with 'origin/master'.

You are currently bisecting, started from branch 'master'.
    (use "git bisect reset" to get back to the original branch)

Changes to be committed:
    (use "git reset HEAD <file>..." to unstage)

        modified: library.js

[your-computer:your-project$ git branch
   rama-b
*  master

[your-computer:your-project$

5. git cherry-pick

En este comando, podemos elegir una rama en particular y llevar los cambios a otra.

Digamos que tenemos una rama-b y que hemos hecho commit de todos nuestros cambios. Para este ejemplo utilizaremos la rama master, pero puede ser cualquier otra, llevaremos el commit de la rama-b. Usando el comando, git cherry-pick <branch> podemos obtener un commit completo en otra rama.

[your-computer:your-project$ git branch
   rama-b
*  master
[your-computer:your-project$ git cherry-pick rama-b
[master 6hy3ed0] prueba 3
  Date: Web Apr 22 10:03:43 2020 -0500
1 file changed, 1 insertion(+), 1 deletion(-)

[your-computer:your-project$

6. git stash

Este comando es para cambios en un archivo que no se han puesto en un commit. Digamos que temenos varios cambios en un archivo, pero necesitas ir atrás y probar algo antes de de colocar los cambios en un commit o simplemente aún no está listo para colocar los cambios en un commit. Para eso sirve git stash.

El ejecutar el comando git stash, Git toma esos cambios y los almacena para después utilizarlos, por lo que podemos trabajar sobre diferentes ramas, bajar los cambios de otros, etc. y al finalizar nuestras pruebas o cuando estemos listos para integrar cambios, regresamos a nuestra rama y ejecutamos git stash pop y nuestros cambios reaparecerán.

7. git help

Para poder usar Git necesitamos instalar el paquete y configurarlo, pero terminar la instalación Git nos da el consejo de utilizar el comando git help <command> para resolver nuestras dudas acerca de un comando en específico o simplemente git help para saber más acerca del uso de Git. Aunque es un consejo útil, todos sabemos que una visita a StackOverflow es casi obligatoria para despejar las dudas.

Pero si deseamos evitar esa visita y con el paquete de Git hemos instalado los manpages localmente, podemos utilizar un comando para consultar ayuda desde el navegador.

Al ejecutar git help -w <comando>, Git abrirá un sitio web en nuestro navegador y así poder leer la información que necesitamos acerca del comando en una interfaz más amigable. Hay que recordar que si no tenemos instalado los manpages localmente, al ejecutar el comando nos dará la siguiente advertencia:

fatal: HTML documentation is not provided by this distribution of git

A pesar de esto, siempre podremos usar la opción de ver la ayuda desde la terminal.

Git es más poderoso de lo que crees.

En muchas ocasiones solemos usar Git sin tener idea de que existen utilidades de la misma herramienta que nos pueden ayudar a evitar errores al integrar código a los proyectos grupales o incluso personales. Estos 7 comandos quizás te sirvan para un mejor uso de la herramienta y para acabar de una vez con esos molestos merge errors. Si tiene otro comando que no hayamos mencionado o cometimos un error al escribir el artículo, siéntase libre de comentar desde la caja de comentarios en la parte inferior.

 

Leave a Comment