Comandos y conceptos esenciales de Git
Git es un sistema de control de versiones distribuido diseñado para rastrear cambios en el código fuente durante el desarrollo de software. Facilita la colaboración entre desarrolladores y permite mantener un historial completo de todos los cambios realizados en un proyecto.
En este tutorial, cubriremos los comandos y conceptos más importantes de Git que todo desarrollador debería conocer.
Antes de comenzar, asegúrate de tener Git instalado en tu sistema:
brew install git
o descárgalo desde git-scm.com
Descarga e instala desde git-scm.com
sudo apt-get update
sudo apt-get install git
Después de instalar Git, debes configurar tu identidad:
git config --global user.name "Tu Nombre"
git config --global user.email "tu.email@ejemplo.com"
Crea una copia local de un repositorio remoto:
git clone https://github.com/usuario/repositorio.git
Para clonar una rama específica:
git clone -b nombre-rama https://github.com/usuario/repositorio.git
Inicializa un nuevo repositorio Git en el directorio actual:
git init
Muestra el estado de los archivos en el directorio de trabajo:
git status
Añade archivos al área de preparación (staging):
git add archivo.txt # Añade un archivo específico
git add . # Añade todos los archivos modificados
git add *.js # Añade todos los archivos JavaScript
Guarda los cambios en el repositorio:
git commit -m "Mensaje descriptivo del cambio"
Para añadir y hacer commit en un solo paso (solo para archivos ya rastreados):
git commit -am "Mensaje del commit"
Envía los commits locales a un repositorio remoto:
git push origin main # Envía commits a la rama main
git push # Si ya está configurado el upstream
Obtiene y fusiona cambios del repositorio remoto:
git pull origin main # Obtiene cambios de la rama main
Descarga cambios del repositorio remoto sin fusionarlos:
git fetch origin # Obtiene todos los cambios
git fetch origin rama # Obtiene cambios de una rama específica
Lista, crea o elimina ramas:
git branch # Lista todas las ramas locales
git branch -a # Lista todas las ramas (locales y remotas)
git branch nueva-rama # Crea una nueva rama
git branch -d rama-a-eliminar # Elimina una rama
git branch -D rama-forzar # Elimina forzosamente una rama
Cambia entre ramas o restaura archivos:
git checkout nombre-rama # Cambia a una rama existente
git checkout -b nueva-rama # Crea y cambia a una nueva rama
git checkout -- archivo.txt # Descarta cambios en un archivo
Comando moderno para cambiar entre ramas (Git 2.23+):
git switch nombre-rama # Cambia a una rama existente
git switch -c nueva-rama # Crea y cambia a una nueva rama
Fusiona una rama con otra:
git checkout main # Primero, cambia a la rama destino
git merge feature-rama # Fusiona feature-rama en main
Reorganiza los commits para crear un historial más limpio:
git checkout feature # Cambia a la rama feature
git rebase main # Reorganiza los commits de feature sobre main
Rebase interactivo para modificar commits:
git rebase -i HEAD~3 # Modo interactivo para los últimos 3 commits
Deshace cambios y manipula el historial:
git reset --soft HEAD~1 # Deshace el último commit manteniendo cambios en staging
git reset --mixed HEAD~1 # Deshace el último commit y staging (default)
git reset --hard HEAD~1 # Deshace el último commit, staging y cambios en el directorio
Crea un nuevo commit que deshace los cambios de un commit previo:
git revert a1b2c3d # Revierte el commit con ID a1b2c3d
Guarda temporalmente cambios sin hacer commit:
git stash # Guarda cambios actuales
git stash list # Lista todos los stashes
git stash apply # Aplica el último stash sin eliminarlo
git stash pop # Aplica y elimina el último stash
git stash drop # Elimina el último stash
Aplica los cambios de un commit específico:
git cherry-pick a1b2c3d # Aplica los cambios del commit a1b2c3d
Un modelo de ramificación que define roles específicos para diferentes ramas:
Para más detalles sobre GitFlow, consulta nuestra sección de GitFlow.
Un flujo de trabajo más simple: