Comandos Git más importantes para usarlo como un experto

Principales comandos Git
Share on facebook
Share on twitter
Share on linkedin

Viendo el éxito de la entrada en la que propongo una forma de gestionar las ramas de Git (que he de decir que la propuesta no es mía 😜, las cosas como son), he creído conveniente crear este post para que sirva de chuleta para aprender los comandos básicos de Git y no morir en el intento.

Pero antes de nada debes tener presente una cosa. A diferencia de otros sistemas de control de versiones, como SVN, en Git se suele trabajar con dos repositorios: uno local y otro remoto.

Como norma general, en tu copia local irás haciendo commits con regularidad y en él crearás las ramas feature/* para tu trabajo diario (revisa el post cómo gestionar las ramas en Git si no sabes qué son estas ramas). Solo cuando tu código esté listo para compartir lo incluirás en el repositorio remoto. En este repositorio se encuentra el código del proyecto de todo el equipo (y si trabajas por tu cuenta, te servirá de copia de seguridad). Deberás actualizar tu repositorio local con el código del repositorio remoto para hacerte con una copia del código compartido por el resto de integrantes de tu equipo.

Ahora que ya tienes estos conceptos claros, veamos los principales comandos Git.

Comandos Git para crear un repositorio local

Para crear un repositorio local ejecuta el siguiente comando:

git init

Una vez creado, debes configurar el nombre y la dirección de correo electrónico con los que «firmarás» los commits del repositorio recién creado. Para ello ejecuta los siguientes comandos Git:

git config user.name "Tu nombre"
git config user.email tu_direccion_de_email

Si quieres que esta información sirva para cualquier repositorio que configures en tu sistema, debes añadir la opción --global. Yo no te la recomiendo, ya que quizá trabajes en distintos proyectos/equipos y tu dirección de email puede que sea distinta. En cualquier caso, el comando Git es:

git config --global user.name "Tu nombre"
git config --global user.email tu_direccion_de_email

Integrando un repositorio remoto

Para integrar un repositorio local con un repositorio remoto debes ejecutar el siguiente comando Git:

git remote add origin <URL o PATH del repositorio remoto>

#Ejemplo:

git remote add origin https://github.com/j2logo/tutorial-flask.git

La palabra origin no es obligatoria. Es el nombre con el que identificar al repositorio remoto (puedes añadir tantos repositorios remotos como quieras).

También puedes hacer un checkout o clonar un repositorio remoto directamente. Esto te ahorrará el paso de crear el repositorio local, ya que se crea automáticamente y quedará conectado al repositorio remoto. Para ello ejecuta:

git clone <URL o PATH del repositorio remoto>

#Ejemplo:

git clone https://github.com/j2logo/tutorial-flask.git

❗️ Recuerda configurar el nombre y el email con el que firmar los commits.

Comandos Git para confirmar los cambios: add y commit

Una vez que quieras confirmar los cambios en tu repositorio local hay dos pasos que debes seguir. En primer lugar debes indicar qué ficheros contienen los cambios que quieres confirmar, para lo que se usa el comando add:

git add <nombre_fichero>

# Para incluir todos los ficheros con cambios, ejecuta:

git add .

Una vez que has indicado los cambios a confirmar, es hora de hacer un commit:

git commit -m "Mensaje del commit"

Integrando los cambios en tu repositorio remoto

Cuando tu cambios en el repositorio local estén listos para ser integrados en el repositorio remoto, el comando a ejecutar es:

git push origin <nombre_rama_local>

❗️Recuerda que origin es el nombre que le dimos al repositorio remoto.

Comandos Git para crear ramas

Las ramas nos permiten trabajar en distintas funcionalidades a la vez y en distintas versiones de nuestra aplicación sin que los cambios afecten de unas a otras. Para saber más acerca de las ramas, puedes echar un ojo a la entrada en la que explico cómo trabajar con ramas.

Para crear una rama y situarte en ella ejecuta:

git checkout -b <nombre_rama>

Si quieres cambiarte a otra rama existente:

git checkout <nombre_otra_rama>

Recuerda borrar una rama cuando ya no tengas que trabajar más en ella:

git branch -d <nombre_rama>

Fusionando el contenido de una rama en otra

Una vez que el trabajo en una rama secundaria de tu repositorio local ha terminado, debes integrar los cambios en una rama principal. Por ejemplo, de una rama feature a la rama dev. Para ello, debes hacer un merge de la rama feature desde dev de la siguiente manera:

# Sitúate en dev
git checkout dev

# Ahora fusiona la rama feature-1
git merge feature-1

El comando para integrar los cambios del repositorio remoto a tu repositorio local es:

git pull

Comandos Git para deshacer los cambios: revert

Es posible que en alguna ocasión los cambios realizados no sirvan y quieras volver a la versión anterior de un fichero. En ese caso, ejecuta:

git checkout -- <nombre_fichero>

Para deshacer los cambios locales y commits y traer la última versión estable del repositorio remoto, los pasos son los siguientes:

git fetch origin
git reset --hard <nombre_rama_remota>

# Ejemplo:
git reset --hard origin/dev

Mis recomendaciones

Los anteriores son los principales comandos Git que utilizarás en tu día a día a la hora de trabajar en tu repositorio. No obstante, quiero darte una serie de recomendaciones y trucos para que tu repositorio no se líe ni pierdas el trabajo realizado:

  • Si es posible, sigue este flujo para gestionar las ramas de tu repositorio.
  • Añade el fichero .gitignore nada más crear tu repositorio local para no ensuciar el repositorio con ficheros innecesarios.
  • No incluyas en tu repositorio los ficheros de configuración de tu proyecto que crea el IDE de desarrollo.
  • Haz commits con regularidad en tu repositorio local (siempre y cuando el código esté limpio de fallos).
  • Solo integra tu repositorio local con el remoto (hacer un push) cuando el código esté realmente listo para compartir y libre de errores.

Para evitar conflictos en el repositorio, intenta seguir el flujo siguiente (es lo que a mí me ha funcionado):

# Clono de un repositorio remoto: Github, Gitlab, ... 
# Previamente he configurado este repositorio
git clone <URL_repositorio_remoto>

# Establezco los parámetros de mi usuario
git config user.name "J2logo"
git config user.email juanjo@j2logo.com

# Creo la rama dev a partir de master
git checkout -b dev

# Pusheo la rama dev en el repositorio remoto
git push origin dev

# Cuando tengo que desarrollar algo, creo la
# rama correspondiente
git checkout -b feature/feature_1

# Voy haciendo commits sobre la rama feature_1
# hasta que la funcionalidad está terminada
git commit -m "Msg 1"
git commit -m "Msg 2"

# Cuando la funcionalidad está lista, la paso
# a la rama dev. Para ello, me sitúo en dev
git checkout dev

# Actualizo la rama dev con posibles cambios
# en el repositorio remoto
git pull origin dev

# Ahora sí, integro los cambios de la rama
# feature_1 en la rama dev
git merge --no-ff feature/feature_1

# Pusheo la rama dev para que el resto del
# equipo pueda ver los cambios
git push origin dev

# Borro la rama feature_1 porque ya no
# me va a hacer falta
git branch -d feature/feature_1

...

Espero que estos consejos te sirvan de ayuda. Si es así:

👇🏻👇🏻👇🏻

Si te ha resultado útil, compártelo con tus amigos 🤗

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Sé un Pythonista: Recibe trucos Python y accede a nuestro espacio de Slack

También te puede interesar

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

Últimos posts

¿Quieres ser un auténtico Pythonista? 🐍

📩 Recibe de vez en cuando trucos, scripts y tutoriales Python en español para dominar el lenguaje. No es SPAM. Date de baja cuando quieras

🥇 Accede a nuestra comunidad privada de Slack: Pythonistas-es

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

Pythonistas-es

SÉ UN AUTÉNTICO PYTHONISTA

📩 Recibe trucos, scripts y tutoriales Python

🥇 Accede a nuestra comunidad privada de Slack