En los últimos años, Git se ha convertido en una parte fundamental en la pila de conocimientos de casi todos los desarrolladores.  Pero a pesar de que Git es tan conocido, hay muchos comandos de Git que no lo son.

En este corto post, me gustaría mostrarte siete pequeños comandos que pueden ayudarte a ser más productivo y experto en Git. Vamos a verlos.

Descubrir Qué Ha Cambiado en un Archivo

Mantenerse al tanto de las cosas puede ser difícil, especialmente si muchas personas trabajan sobre la misma base de código.

Para ayudarte a comprender exactamente cómo (Así como cuándo y quién)  un archivo fue modificado, puedes utilizar el viejo comando git log  pero con algunos parámetros adicionales.

$ git log --since="3 weeks" -p index.html

Usando "-P"  te aseguras de ver los cambios reales y diferencias (y no solo los commit de los metadatos). Y la opción "--since" te ayudará a filtrar en un periodo de tiempo reciente.

Deshacer Tu Último Commit con Estilo

A veces pensamos que hay un montón de cambios listos para ejecutar un commit  pero inmediatamente después de ejecutarlo, notamos que fuimos demasiado apresurados.

Pueden faltar cambios, podríamos haber llegado al branch equivocado, o podrían haber ocurrido una multitud de otros problemas...

Lo único que es seguro: ¡nos gustaría deshacer ese último cambio y recuperar  las modificaciones  en nuestra copia de trabajo!

Podemos usar el comando git reset  con un conjunto especial de opciones:

$ git reset --mixed HEAD~1

La opción "--mixed"  asegura que los cambios contenidos en los commit que realizamos "los cuales queremos deshacer" sean conservados y NO se descarten. De este modo serán almacenados de manera local en nuestra copia de trabajo.

Usar la notación  "HEAD~1"  es un gran atajo para especificar   "el commit antes del último" – el cual es exactamente el que queremos en orden de deshacer su más reciente modificación.

Descubrir Cómo un Archivo se Diferencia en Otro Branch

Después de realizar algunos cambios a un feature branch de un archivo, es posible que desees compararlo con otro branch. Para hacer un ejemplo concreto, digamos...

  • Actualmente te encuentras en el branch "feature/login"  y...
  • quieres entender cómo el archivo "myFile.txt" aquí...
  • es diferente de su versión en el branch "develop".

El comando git diff  puede hacer esto si especificas los siguientes parámetros.

$ git diff develop -- myFile.txt

Verás una diferencia clara y agradable que muestra exactamente cómo tu archivo se diferencia de su versión en el otro branch.

Usar "switch" en Lugar de "checkout"

El comando git checkout tiene  una cantidad diferente de usos y significados. Por eso es que, recientemente, la comunidad de Git decidió publicar un nuevo comando: git switch. Como su nombre en ingles lo indica, fue creado específicamente para la tarea de cambiar entre branches.

$ git switch develop

Como puedes ver , su uso es muy sencillo y similar a "git checkout". Pero la gran ventaja sobre el comando "checkout" es que "switch" NO tiene un millón de significados y capacidades más.

Ya que es un miembro bastante nuevo de la familia de comandos Git, debes verificar si la instalación de Git ya lo incluye.

Cambiar de un Lado a Otro Entre Dos Branches

En algunos escenarios, podría ser necesario alternar entre dos branches rápidamente. En lugar de escribir siempre los nombre de los branches es su totalidad, simplemente puedes usar el siguiente atajo:

$ git switch -

Al usar el carácter de guión como único parámetro, el comando "git switch" verificará el branch previamente activo. Como se mencionó anteriormente, esto puede se muy útil si se requiere cambiar constantemente entre dos branches en repetidas ocasiones.

Usar "git restore" para Deshacer Cambios Locales

Hasta hace poco, tenías que usar de alguna manera  git checkout o git reset cuando querías deshacer los cambios locales.

Pero con el comando (relativamente nuevo) git restore,  ahora tenemos un comando que se creó exactamente para este propósito. Esto lo distingue de "checkout" y "reset", porque son comandos los cuales tienen muchos otros casos de uso.

Aquí encontrarás una  descripción general rápida de las cosas más importantes que puedes hacer con "git restore":

# Unstage un archivo, pero dejar intactos sus cambios reales
$ git restore --staged myFile.txt

# Descarta tus cambios locales en un archivo predeterminado
$ git restore myFile.txt

# Deshacer todos los cambios locales en una copia de trabajo (ten cuidado)
$ git restore .

Restaurar a una Versión Histórica de un Archivo

El comando git restore ofrece otra función muy útil  llamada "--source". Con esta opción, puedes restaurar fácilmente cualquier versión anterior de un archivo especifico:

$ git restore --source 6bcf266b index.html

Simplemente mencionando el Hash de revisión de la versión que deseas restaurar (y el nombre del archivo, por supuesto).

Descubre el Poder de Git

Aunque Git es tan reconocido en estos días, gran parte de su poder aún es desconocido para el publico. Es cierto que puedes "Sobrevivir" con solo unos pocos comandos como commit, push y pull. ¡Pero esto es conducir un Ferrari solo en primera!.

Si estás dispuesto a profundizar un poco más, descubrirás algunas características más poderosas de Git. Y estas tienen el potencial no solo de hacerte más productivo, sino también – un ultima instancia – ¡un mejor desarrollador!

Acerca del Autor

Tobias Günther es el CEO de Tower, el popular cliente de escritorio de Git que ayuda a más de 100,000 desarrolladores en todo el mundo a ser más productivos con Git.

Traducido del artículo de Tobias Günther - Git Secrets: 7 Commands You Might Not Know