DEV Community

Cover image for [ES] Git. Guía desde cero.
David Rojo
David Rojo

Posted on • Updated on

[ES] Git. Guía desde cero.

En este artículo veremos desde la creación de un nuevo repositorio hasta la publicación de este en un servidor y comandos que uso a diario que pueden resultar útiles.

Será necesario tener Git instalado en nuestro equipo.

1. ¿Qué es Git?

Git es el sistema de control de versiones más usado actualmente, se ha convertido en el estándar de facto para la mayoría de las empresas, por eso es importante saber cómo manejarlo eficientemente.

Un proyecto versionado en Git, está compuesto por un mínimo de cuatro áreas:

  • Working Area: comprende los ficheros que han sido creados, modificados o borrados.

  • Stash: comprende los ficheros que han sido modificados y hemos reservado para hacer algo con ellos en un futuro.

  • Staging Area: comprende los ficheros que queremos que sean añadidos al repositorio.

  • Local Repository: Es el historico de modificaciones de nuesto repositorio, esta compuesto por diferentes ramas que contienen todos los cambios que se han realizado sobre un proyecto.

Las ramas son copias del proyecto que parten de la misma base de código, utilizadas para implementar cambios a nuestro repositorio.

Adicionalmente, podemos tener un área más, llamada Remote repository, que no es más que una copia de nuestra área Local Repository, localizada en uno o varios servidores, ya sean GitHub, GitLab o BitBucket entre otros...

Es posible tener más de un Remote Repository para un Local Repository.

2. Configuración inicial.

Lo primero que tenemos que hacer tras instalar Git es configurar nuestras credenciales, para esto vamos a hacer uso de estos tres comandos.

$ git config --global user.name "tu_nombre_de_usuario"
$ git config --global user.email "tu_email"
$ git config --global core.editor "tu_editor_de_texto"
Enter fullscreen mode Exit fullscreen mode

El editor de texto por defecto es Vim.

3. Iniciar/Descargar un repositorio.

Para iniciar un repositorio solo tenemos que ejecutar el comando git init dentro del directorio de nuestro proyecto.

Para descargar(clonar) un repositorio ya existente, debemos ejecutar el comando git clone <url_repositorio>.

4. Comandos comunes.

La mayoría de los comandos contienen parámetros extra que por simplicidad no serán explicados en este artículo. Serán explicados los más comunes para un uso cotidiano.

4.1. Ficheros.

  • git add <fichero>: nos permite mover ficheros desde Working directory a Staging Area.

  • git stash: nos permite reservar los cambios de nuestro Staging Área para ser usados posteriormente.

  • git stash list : nos permite listar los cambios que hemos reservado con anterioridad.

  • git stash pop: nos permite recuperar el último cambio que hemos guardado.

  • git stash pop <índice_stash>: nos permite recuperar el cambio con índice <índice_stash>.

  • git stash drop : nos permite borrar un cambio que hemos reservado.

  • git commit -m "mensaje": nos permite mover ficheros desde Staging Area a Local Repository añadiendo un mensaje.

  • git diff <nombre_fichero>:muestra la diferencia sobre un fichero con respecto a su anterior versión.

  • git reset: nos permite mover todos los ficheros desde Staging Area a Working Directory.

  • git reset <nombre_fichero>: nos permite mover un fichero desde Staging Area a Working Directory.

  • git reset --soft HEAD~<numero_de_commits>: nos permite deshacer los cambios de nuestro Local Repository x commits hacia atrás sin perder esas modificaciones, donde x=<numero_de_commits>.

  • git restore <nombre_fichero>: nos permite deshacer los cambios que se han realizado sobre un fichero.

4.2. Ramas.

  • git branch: lista todas las ramas de nuestro Local Repository y en cuál estamos actualmente.

  • git branch -d: elimina una rama que ya ha sido fusionada con otra.

  • git branch -D:fuerza la eliminación de una rama, haya sido ya fusionada o no.

  • git switch <nombre_rama_destino>: nos permite cambiarnos a la rama destino.

  • git switch -c <nombre_rama>: crea una nueva rama a partir de la rama en la que nos encontramos actualmente y nos movemos a esta.

  • git checkout <id_commit>: nos permite movernos hacia un commit existente.

  • git merge <rama_a_fusionar>: fusiona una rama con nuestra rama actual.

4.3. Repositorio Remoto.

  • git remote add <nombre_vinculo> <url_repositorio>: vincula nuestro Local Repository con un Remote Repository.

  • git remote remove <nombre_vinculo>: borra un vínculo con un Remote Repository.

  • git remote -v:lista con que Remote Repositories está vinculado nuestro Local Repository.

  • git push <nombre_vínculo> <rama_remota>: nos permite subir los commits de nuestro Local Repository a un Remote
    Repository
    .

  • git push -f <nombre_vínculo> <rama_remota>: nos permite forzar la subida de los commits de nuestro Local Repository a un Remote Repository.

  • git fetch: descarga los metadatos de un Remote Repository a un Local Repository.

  • git pull: es una combinación de git fetch y git merge, descarga los cambios y metadatos de un Remote Repository y los fusiona con nuestra rama actual en Local Repository.

4.4. Genéricos.

  • git status: muestra el estado actual de nuestro repositorio.

  • git log: lista los cambios que se han realizado en nuestro Local Repository.


Si conoces algún comando útil y crees que debería estar en esta lista, no dudes en comentarlo!

Top comments (16)

Collapse
 
sebastian_door profile image
Sebastian Door

Muy bien!

Collapse
 
davidrojom profile image
David Rojo

Muchas gracias!

Collapse
 
diegogfritz profile image
Fritz, Diego G.

Muy bueno. Muchas gracias.

Collapse
 
davidrojom profile image
David Rojo

Muchas gracias, espero que te sea de ayuda

Collapse
 
carlillo profile image
Carlos Caballero

Muchas gracias por compartir con todos nosotros.

Esperamos más contenido!

Collapse
 
davidrojom profile image
David Rojo

Muchas gracias!!

Collapse
 
blosky01 profile image
Pablo Bravo

Muy bien resumido y estructurado 🔝

Collapse
 
davidrojom profile image
David Rojo

Gracias!

Collapse
 
adrianlozanomartinez profile image
Adrián Lozano Martínez

Muy currado, enhorabuena

Collapse
 
davidrojom profile image
David Rojo

Muchas gracias

Collapse
 
dennistobar profile image
Dennis Tobar

Hola, nunca está demás un recordatorio en estos temas 😅. Te invito a cambiar uno de los tags a Spanish para que sea más fácil encontrarlo para la comunidad hispanoparlante =)

Collapse
 
davidrojom profile image
David Rojo

Muchas gracias! Eso está hecho.

Collapse
 
victoramon profile image
Victor Ramon

Enhorabuena contenido muy util

Collapse
 
davidrojom profile image
David Rojo

Muchas gracias por tu comentario!

Collapse
 
daniolivet profile image
Daniel Olivet

Grande!

Collapse
 
davidrojom profile image
David Rojo

Gracias!