Llevo usando Git durante algunos años y todavía me encuentro buscando en Google cómo hacer algunas de sus tareas básicas. Este artículo es mi intento de aprender a hacer algunas de esas tareas escribiendo sobre ellas. Y aunque todavía a veces las olvide, al menos tendré una referencia donde poder encontrar fácilmente estos comandos, y, por supuesto, tú también la tendrás.

Pero antes de pasar a aprender cómo usar estos comandos, les contaré algo que me dijo una vez un colega mío y que se me ha quedado grabado desde entonces: Todo es posible con Git, nada se pierde en Git.

No sé si la primera parte de su declaración es totalmente cierta, pero la tengo en mente cada vez que intento hacer algo con Git. Sinceramente, creo que voy a encontrar un comando que me ayude a hacer lo que necesito con solo buscar en Google las palabras adecuadas. Si eres nuevo en Git, me gustaría que creyeras en ello también.

En este artículo, aprenderemos a hacer lo siguiente:

  1. Agregar repositorios remotos.
  2. Cambiar repositorios remotos.
  3. Borrar una rama local o remota.
  4. Fusionar un archivo de una rama a otra.
  5. Deshacer un commit localmente y uno remotamente.

Aunque este artículo está dirigido a personas con, al menos, conocimientos básicos de Git, haré lo posible por explicar los términos lo mejor posible.

1. Agregar Repositorios Remotos

Los repositorios remotos son versiones de nuestros proyectos que se almacenan en Internet o en cualquier otro lugar. Añadir un repositorio remoto es una forma de decirle a Git dónde está almacenado nuestro código.

Esto se puede hacer usando la URL del repositorio. Esta podría ser la URL de nuestro repositorio, el fork de otro usuario, o incluso un servidor completamente diferente.

Cuando clonamos un repositorio, Git implícitamente añade ese repositorio como el origen remoto, denominándose en Git, origin. Para añadir un nuevo repositorio Git, se utiliza este comando:

git remote add <nombre del repositorio> <url>

Donde <nombre del repositorio> es, precisamente, un nombre único que le hemos asignado, y url es la url del repositorio que queremos añadir.

Por ejemplo, si queremos añadir un repositorio denominado upstream, podemos escribir el siguiente comando:

git remote add upstream https://github.com/sarahchima/personal-website.git

Recuerda que tu nombre de repositorio puede ser cualquiera, sólo tiene que ser único, diferente a los nombres de los repositorios remotos que ya tienes. También debe ser algo que puedas recordar fácilmente.

Para ver la lista de URL remotas que has añadido, podemos ejecutar el siguiente comando:

git remote -v

Veremos una lista de los nombres y las URL remotas que hemos añadido.

¿Pero qué pasa si quieres cambiar estas URL remotas? Vamos a ver el siguiente comando de Git.

2. Cambiar los Repositorios Remotos

Hay varias razones por las que podemos querer cambiar una URL remota. Por ejemplo, recientemente tuve que pasar de usar URLs de https a URLs de ssh para un proyecto en el que estuve trabajando.

Para ello, utilizaremos el siguiente comando:

git remote set-url <nombre de repositorio remoto existente> <url>

Para que este comando funcione, el nombre de repositorio remoto tiene que existir previamente. Esto significa que no funcionará si no has añadido ese nombre remoto antes.

Por ejemplo, si queremos cambiar la URL remota de un repositorio denominado upstream, teclearemos:

git remote set-url upstream git@github.com:sarahchima/personal-website.git

Recuerda que debes verificar que el cambio se ha realizado tecleando la sentencia:

git remote -v

Ya tenemos suficiente acerca de repositorios remotos, vayamos con algo completamente diferente.

3. Borrar una rama local o remota

Una rama de trabajo, es una versión del repositorio que es diferente del proyecto principal de trabajo. Si no estás familiarizado con las ramas en Git, a lo mejor te interesa leer sobre ellas en Git antes de continuar.

Cómo borrar una rama local

Para borrar una rama local, lo primero es asegurarse de no estar en la mencionada rama. Si tienes que moverte a una rama diferente, usa el siguiente comando:

git checkout <nombre de la rama adonde mover>

Una vez estés en otra rama diferente, puedes proseguir a borrar la rama con el siguiente con el siguiente comando:

git branch -d <nombre de la rama>

Luego si queremos borrar una rama denominada fix/homepage-changes, haremos lo siguiente:

git branch -d fix/homepage-changes

Podemos teclear el comando git branch en la terminal para confirmar que la rama ha sido borrada satisfactoriamente.

Pero, a veces, lo que queremos borrar es una rama que ya hemos subido a un repositorio remoto, ¿Cómo podemos hacerlo?

Cómo borrar una rama remota

Para borrar una rama remota, usaremos el siguiente comando:

git push <nombre del repositorio remoto> --delete <nombre del branch>

Donde <nombre del repositorio remoto> es el nombre del repositorio donde se encuentra la rama a borrar.

Por ejemplo, si queremos borrar una rama denominada fix/homepage-changes del origin, teclearemos lo siguiente:

git push origin --delete fix/homepage-changes

La rama remota quedará borrada.

4. Fusionar un archivo de una rama a otra

A veces, queremos fusionar el contenido de un archivo específico de una rama a otra, lo que se conoce como fusionar. Por ejemplo, podemos querer fusionar del contenido de un archivo denominado index.html de la rama master de un proyecto a una rama denominada development del mismo proyecto. ¿Cómo lo podemos hacer?

Primero, nos movemos a la rama hacia la que queremos llevar el archivo, para ello usamos la opción checkout. Por ejemplo, para moverse a la rama development:

git checkout development

Ahora, fusionamos el archivo que traemos desde la rama master, usando el comando checkout --patch:

git checkout --patch master index.html

En caso de querer sobrescribir completamente el archivo, se omite la etiqueta --patch

git checkout master index.html

También se omitirá --patch si el archivo index.html no existe en la rama destino development.

5. Deshacer un commit

A veces, ya hemos realizado un commit, es decir, hemos confirmado los cambios, y nos damos cuenta de que es incorrecto por lo que queremos deshacerlo. Incluso hemos podido llevar los cambios a un repositorio remoto, pero queremos revertir la acción. ¿Cómo podemos deshacer o borrar ese commit? Comencemos deshaciendo un commit local.

Cómo deshacer un commit local

Una forma de deshacer un commit local es usando el comando git reset. Por ejemplo, si se quiere deshacer el último commit realizado podemos teclear:

git reset --soft HEAD~1

La etiqueta --soft mantiene los cambios realizados en los ficheros, sólo se revierte el propio commit. Sin embargo, si lo que se quiere es que tampoco se mantengan dichos cambios en los ficheros, se usará el flag --hard en su lugar, por ejemplo:

git reset --hard HEAD~1

Recuerda, usaremos el flag --hard solo cuando estemos seguros de que no necesitamos ninguno de los cambios.

Además, fíjate que HEAD~1 apunta al último commit realizado. Si lo que queremos es deshacer un commit anterior, podemos usar git reflog para obtener un log de todos los commits anteriores. Después, usaremos el comando git reset con el hash del commit a borrar (el hash es el número que está al comienzo de cada línea en el historial del log). Por ejemplo, si el hash del commit es 9157b6910, haremos los siguientes:

git reset --soft 9157b6910 

Cómo deshacer un commit remoto

Hay veces en las que se quiere deshacer un commit que ya hemos subido a un repositorio remoto. En estos casos, podemos usar git revert para deshacerlo de forma local y, posteriormente, subir este cambio a la rama remota.

Primero, buscamos el hash del commit usando git reflog:

git reflog

Luego, lo revertimos. Si asumimos que nuestro hash es 9157b6910, haríamos lo siguiente:

git revert 9157b6910 

Finalmente, subimos el cambio a la rama remota.

Sumario

En este artículo, hemos examinado los comandos para realizar las siguientes tareas en Git:

  1. Añadir repositorios remotos.
  2. Cambiar repositorios remotos.
  3. Borrar una rama.
  4. Fusionar un archivo de una rama a otra.
  5. Borrar un commit local y remoto.

Tal vez algún día escriba más acerca de más tareas que se pueden realizar con Git.

Espero que hayas disfrutado del artículo, muchas gracias por leerlo.

Traducido del artículo de Sarah Chima Atuonwu - 5 Git Commands You Should Know, with Code Examples