Git es un sistema de control de versiones distribuido que permite gestionar y seguir los cambios en el código fuente de un proyecto.
Facilita la colaboración entre desarrolladores y el mantenimiento de versiones del software.
Instalación y configuración inicial
Instalar en Windows
Descarga el instalador desde la página oficial y sigue las instrucciones
Instalar en Linux
Utiliza el gestor de paquetes correspondiente:
sudo apt-get install git # Para Ubuntu/Debian
sudo yum install git # Para CentOS/RHEL
Instalar en Mac
Usa Homebrew:
brew install git
Configuración Inicial
Configurar el Usuario
Establecer tu nombre y correo electrónico (aparecerán en los registros de commits)
git config --global user.name "Tu Nombre"
git config --global user.email "tu_email@ejemplo.com"
Ver la configuración actual
Puedes verificar tus configuraciones actuales con:
git config --list
Configuración de editor
Elige tu editor de texto preferido para los mensajes de commit.
git config --global core.editor "nombre_editor"
Ciclo Básico de Trabajo
Directorio de trabajo
Archivos locales no rastreados por Git.
Área de preparación (Staging)
Archivos preparados para la próxima confirmación.
Repositorio (HEAD)
Archivos confirmados y almacenados en Git.
Repositorios
Inicializar un nuevo repositorio
Crea un nuevo repositorio Git en el directorio actual.
git init
Clonar un repositorio existente
Copia un repositorio remoto a tu máquina local.
git clone https://github.com/usuario/repo.git
Ver el estado del repositorio
Muestra el estado actual de los archivos en el directorio de trabajo (modificados, no seguidos, etc.).
git status
Show
Muestra detalles de un commit específico, como los cambios en archivos, el mensaje del commit y la metadata (autor, fecha).
git show <commit>
Blame
Muestra quién realizó el último cambio en cada línea de un archivo, útil para rastrear cuándo y quién hizo modificaciones en el código.
git blame <archivo>
Control de cambios
Añadir Cambios
Añadir archivos al área de preparación (staging)
Añade un archivo específic
git add nombre_archivo
Añadir todos los archivos modificados
git add .
Confirmar Cambios
Realizar un commit
Confirma los cambios añadidos al área de preparación:
git commit -m "Mensaje descriptivo del commit"
Combinar add
y commit
en un solo paso
Añade y comitea todos los cambios en un solo comando.
git commit -a -m "Mensaje del commit"
Eliminar un archivo y removerlo de Git
Borra el archivo y lo remueve del seguimiento de Git.
git rm nombre_archivo
Renombrar o mover un archivo
Renombra o mueve un archivo en el repositorio.
git mv nombre_archivo_nuevo
Historial y revisión de cambios
Ver el historial de commits
Lista los commits recientes en el proyecto.
git log
Ver el historial con diferencias (diff)
Muestra el historial de commits con los cambios detallados línea por línea.
git log -p
Historial con un formato compacto
Muestra el historial con una representación resumida de los commits.
git log --oneline --graph --all
Ver los cambios no comiteados
Muestra las diferencias entre los archivos en el directorio de trabajo y la última versión del repositorio.
git diff
Ver cambios entre dos commits específicos
Compara las diferencias entre dos commits usando sus identificadores.
git diff id_commit1 id_commit2
Deshacer cambios
Revertir cambios no añadidos (untracked o modificados)
Descarta los cambios en los archivos modificados pero no añadidos al área de preparación.
git checkout -- nombre_archivo
Deshacer cambios preparados en el área de staging
Devuelve los archivos del área de staging al estado anterior.
git reset nombre_archivo
Restablecer un commit localmente (soft reset)
Deshace los últimos commits, manteniendo los cambios en el área de trabajo.
git reset --soft HEAD~1
Restablecer completamente (hard reset)
Descarta los últimos commits y todos los cambios.
git reset --hard HEAD~1
Revertir un commit publicado
Crea un nuevo commit que deshace los cambios de un commit anterior.
git revert id_commit
Trabajo con ramas (branches)
Listar todas las ramas
Muestra todas las ramas locales y remotas.
git branch -a
Crear una nueva rama
Crea una nueva rama y permanece en la rama actual.
git branch nombre_rama
Cambiar de rama
Cambia a una rama existente.
git checkout nombre_rama
Crear y cambiar a una nueva rama
Comando que crea una rama y automáticamente te cambia a ella.
git checkout -b nombre_rama
Fusionar una rama con la actual
Combina los cambios de otra rama en la rama actual.
git merge nombre_rama
Eliminar una rama
Una vez fusionada, puedes eliminar una rama con seguridad.
git branch -d nombre_rama
Eliminar una rama de forma forzada
Elimina una rama, incluso si no ha sido fusionada.
git branch -D nombre_rama
Rebase
Reorganiza los commits de la rama actual aplicándolos sobre otra rama. Es útil para limpiar el historial o integrar cambios sin crear un merge commit.
git rebase <rama>
Cherry pick
Aplica un commit específico de cualquier rama o historial de cambios a la rama actual. Esto permite aplicar selectivamente solo ciertos cambios.
git cherry-pick <commit>
Repositorios remotos
Ver los remotos configurados
Muestra una lista de los repositorios remotos.
git remote -v
Agregar un repositorio remoto
Vincula tu repositorio local con uno remoto.
git remote add origin https://github.com/usuario/repo.git
Eliminar un remoto
Desvincula un repositorio remoto.
git remote remove origin
Obtener cambios desde un repositorio remoto
Descarga los cambios del repositorio remoto sin aplicarlos.
git fetch
Actualizar el repositorio local con cambios remotos
Obtiene y fusiona los cambios del repositorio remoto a la rama actual.
git pull origin nombre_rama
Subir los cambios a un repositorio remoto
Envía tus commits al repositorio remoto.
git push origin nombre_rama
Resolución de conflictos
Resolver conflictos de fusión
Cuando hay conflictos durante un merge, Git te indicará los archivos en conflicto. Debes editarlos y resolver los conflictos manualmente. Después de resolver:
git add archivo-resuelto.txt
git commit -m "Conflictos resueltos"
Etiquetas (tags)
Las etiquetas se utilizan para marcar versiones específicas
Ver todas las etiquetas
Muestra una lista de todas las etiquetas creadas.
git tag
Crear una etiqueta (tag)
Marca una tag
git tag nombre_etiqueta
Publicar etiquetas en un repositorio remoto
Envía las etiquetas al repositorio remoto.
git push origin --tags
Stash
El Stash sirve para guardar cambios temporalmente
Guardar cambios en stash
Guarda temporalmente los cambios no confirmados (no commiteados) en el área de trabajo para permitir trabajar en otros cambios sin perder el progreso
git stash
Listar stashes guardados
Muestra una lista de los cambios guardados.
git stash list
Aplicar los cambios guardados
Restaura los cambios del stash más reciente.
git stash apply
Eliminar el stash más reciente
Borra el último stash aplicado.
git stash drop
Optimización y limpieza
Eliminar archivos no seguidos por Git
Limpia el directorio de trabajo eliminando los archivos que no están bajo control de versiones.
git clean -f
Compactar el historial de commits
Reescribe la historia de los últimos commits.
git rebase -i HEAD~n
Optimizar el repositorio
Elimina objetos no referenciados y optimiza el tamaño del repositorio.
git gc