Jason McCreary creador de Laravel Shift nos habla sobre la impresión que se tiene de Git y las preguntas que constantemente se hacen los que recién están empezando a utilizar esta tecnología y cómo es que muchas personas que aunque ya conozcan y trabajen con Git, no conocen del todo lo que es Git. Pero como siempre al final nos encontramos con alguien que es un experto y del cual podemos aprender bastante.

Comandos poco comunes de Git

¿Git add?

Aún y cuando hacemos uso del comando git add a menudo ya sea por medio de git add .,  git add -A o incluso omitiendo este comando y en su lugar creando un commit directo con git commit -am 'mensaje' estamos diciéndole a Git que queremos que agregue todos los cambios de todos los archivos, en su lugar tenemos un par de opciones que nos van a resultar bastante útiles:

git add -p nos permite hacer un patch, es decir, nos permite agregar ciertas secciones de nuestros archivos que contienen cambios, en lugar de agregar todos los cambios que hay en dicho archivo, si en un archivo cambiamos la linea 5 y la línea 10 este comando nos permitirá elegir si queremos agregar el cambio de la línea 5, de la línea 10 o ambos.

git add -i nos permite añadir archivos al stage de manera interactiva, en ocasiones cuando modificamos muchos archivos es probable que no queramos añadirlos todos al stage, una opción es poner los nombres de los archivos justo después del teclear git add pero cuando son muchos resulta un verdadero dolor de cabeza, en su lugar podemos agregarlos de manera interactiva y de esta forma Git va a iterar sobre los archivos y nos preguntará por cada uno si los queremos agregar o no.

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Git commit

En ocasiones, sobre todo cuando tenemos un cambio menor, queremos añadir un commit dentro de otro o incluso modificar el título de un commit, esto lo podemos hacer sin ningún problema siempre y cuando no se haya compartido con alguien más si hacemos el commit de la siguiente manera git commit --amend, esto nos permite modificar nuestro último commit, ya sea para agregar cambios faltantes o para cambiar su encabezado. Si lo único que queremos es agregar cambios faltantes sin cambiar su encabezado podemos teclear git commit --amend --no-edit para mantener el mensaje del commit tal como estaba antes.

Usar amend es seguro si aún no hemos compartido nuestro trabajo con otros (es decir, no hemos hecho “git push”).

Git stash

Hay ocasiones en las que necesitamos quitar todas nuestras cosas de nuestra vista para así enfocarnos en lo realmente importante, git stash nos permite hacer algo similar, supongamos que tenemos cambios en nuestro código, algunos ya están en stage, otros no y repentinamente queremos quitar todo para dejar el código justo como en nuestro último commit pero no queremos perder lo que llevamos, para esto nos sirve git stash, sin embargo esto toma por defecto solamente lo que ya está teniendo seguimiento, es decir, si tenemos archivos nuevos que aún no han estado en algún commit anteriormente no se van a tomar en cuenta a menos de que hagamos git stash --include-untracked

Git push

Al trabajar con este comando normalmente debemos indicar hacia cuál remoto queremos enviarlo (normalmente llamado origin) y qué branch es el que queremos enviar, esto normalmente podemos omitirlo si hacemos uso de git push origin HEAD ya que de esta forma, si nosotros estamos sobre el branch prueba nuestro HEAD también estará sobre prueba y de esta manera se hará el push hacia ese branch, además, si el branch no existe en el repositorio remoto, Git lo creará por nosotros.

Git rebase

Esto nos permite poder hacer varias funciones con los commits que tenemos registrados siempre y cuando no se esté en nuestro repositorio remoto. Entre las funciones que nos brinda podemos hacer un squash es decir, unir 2 o más commits dentro de uno solo, rename o renombrar los commits o incluso podemos eliminar algunos commits (aunque pudiera resultar un poco peligroso hacer esto).

Git cherry-pick

Este comando es muy útil cuando queremos unir ciertos cambios de un branch a otro pero específicamente de un commit en particular, si quisiéramos hacerlo por medio de un merge o un rebase, esto nos traería todos los cambios del branch original, pero en su lugar podemos hacer git cherry-pick <commit> para poder unir a nuestro branch actual un único commit específico.

Git bisect

En ocasiones puede resultar que tengamos un bug en nuestro branch sin tener idea de cuando se originó, este comando nos permite pasarle dos commits, el primero es el del commit que está fallando, el segundo es el del commit que está funcionando y esta función nos irá moviendo dentro de ese rango para revisar cuando se originó ese bug, y nos permitirá comprobar que cada uno de los commits que tenemos esté funcionando correctamente hasta localizar el error.

Git reflog

Git nos permite manejar una especie de historial interno independiente del que se encuentra en nuestro repositorio externo, nos mantiene un registro de cada vez que movamos el puntero de nuestro HEAD y de esta manera poder volver a cierto momento de nuestro proyecto sin importar lo que hayamos hecho, no es recomendable hacerlo parte de nuestro workflow diario ya que no es muy estable pero ocasionalmente pudiera ser útil para nosotros.

Aprende más sobre git reflog y otras técnicas de git que quizás no conoces en nuestro Curso de Git y GitHub con Dimitri Acosta.

Flujos de trabajo

Git flow

Git flow nos permite tener un flujo más ágil de trabajo en el que nuestros branches están específicamente definidos para la función que van a utilizar, normalmente nuestros branches principales son develop y master sin embargo podemos tener más ramas para nuestros teatures, hotfix y releases.

Github flow

Es parecido a lo que hace git flow pero con la diferencia de que solamente tenemos nuestro branch master y los features que vayamos utilizando se hacen desde su propio branch de features.

Atajos

Al estar revisando el log de nuestro proyecto podemos hacer uso de unos pequeños atajos, por ejemplo, en lugar de visualizar todo el historial podemos pasarle unas opciones para poder ver solamente una fracción del historial, suponiendo que queremos ver los últimos 5 commits podemos hacer git log HEAD~5 y para postrarlos en una sola línea podemos pasar el flag –oneline

Otro comando que puede resultar muy útil es git checkout -, al pasarle un  al final nos va a devolver hacia el branch en el que estábamos anteriormente, muy útil por si olvidamos cuál branch era o si no nos fijamos en qué branch estábamos.

Git nos permite trabajar con alias, ya que hacemos uso de estos comandos muy frecuentemente podemos ponerles un nombre corto para no tener que escribir el comando completo, sin embargo hay que tener cuidado con los alias que definimos, porque pueden ser confusos, por ejemplo “git co” ¿Equivale a git commit? ¿Equivale a git checkout? Una alternativa a esto es tener autocompletado en vez de aliases.

Herramientas

Prompt

Una de las herramientas que nos puede servir mucho es utilizar un theme para nuestra terminal que nos muestre el branch en el que estamos trabajando para poder tener una representación visual de éste.

Git open

Es una herramienta que no forma parte del núcleo de git, en su lugar es un paquete de npm el cual se puede descargar e instalar en nuestras computadoras, nos permite abrir en el navegador el repositorio de nuestro proyecto, en el branch en el que nos encontremos actualmente dentro de la terminal.

En Styde.net tenemos un Curso completo de Git donde podrás ver más a fondo muchas de las características mencionadas en esta plática para que al final puedas estar en desacuerdo con el título y en su lugar puedan decir «Ya se usar Git«.

Más sobre Laracon Online

Aquí puedes encontrar un resumen de cada charla del evento

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.