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/RHELInstalar en Mac
Usa Homebrew:
brew install gitConfiguració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 "[email protected]"Ver la configuración actual
Puedes verificar tus configuraciones actuales con:
git config --listConfiguració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 initClonar un repositorio existente
Copia un repositorio remoto a tu máquina local.
git clone https://github.com/usuario/repo.gitVer el estado del repositorio
Muestra el estado actual de los archivos en el directorio de trabajo (modificados, no seguidos, etc.).
git statusShow
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_archivoAñ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_archivoRenombrar o mover un archivo
Renombra o mueve un archivo en el repositorio.
git mv nombre_archivo_nuevoHistorial y revisión de cambios
Ver el historial de commits
Lista los commits recientes en el proyecto.
git logVer el historial con diferencias (diff)
Muestra el historial de commits con los cambios detallados línea por línea.
git log -pHistorial con un formato compacto
Muestra el historial con una representación resumida de los commits.
git log --oneline --graph --allVer los cambios no comiteados
Muestra las diferencias entre los archivos en el directorio de trabajo y la última versión del repositorio.
git diffVer cambios entre dos commits específicos
Compara las diferencias entre dos commits usando sus identificadores.
git diff id_commit1 id_commit2Deshacer 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_archivoDeshacer cambios preparados en el área de staging
Devuelve los archivos del área de staging al estado anterior.
git reset nombre_archivoRestablecer un commit localmente (soft reset)
Deshace los últimos commits, manteniendo los cambios en el área de trabajo.
git reset --soft HEAD~1Restablecer completamente (hard reset)
Descarta los últimos commits y todos los cambios.
git reset --hard HEAD~1Revertir un commit publicado
Crea un nuevo commit que deshace los cambios de un commit anterior.
git revert id_commitTrabajo con ramas (branches)
Listar todas las ramas
Muestra todas las ramas locales y remotas.
git branch -aCrear una nueva rama
Crea una nueva rama y permanece en la rama actual.
git branch nombre_ramaCambiar de rama
Cambia a una rama existente.
git checkout nombre_ramaCrear y cambiar a una nueva rama
Comando que crea una rama y automáticamente te cambia a ella.
git checkout -b nombre_ramaFusionar una rama con la actual
Combina los cambios de otra rama en la rama actual.
git merge nombre_ramaEliminar una rama
Una vez fusionada, puedes eliminar una rama con seguridad.
git branch -d nombre_ramaEliminar una rama de forma forzada
Elimina una rama, incluso si no ha sido fusionada.
git branch -D nombre_ramaRebase
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 -vAgregar un repositorio remoto
Vincula tu repositorio local con uno remoto.
git remote add origin https://github.com/usuario/repo.gitEliminar un remoto
Desvincula un repositorio remoto.
git remote remove originObtener cambios desde un repositorio remoto
Descarga los cambios del repositorio remoto sin aplicarlos.
git fetchActualizar el repositorio local con cambios remotos
Obtiene y fusiona los cambios del repositorio remoto a la rama actual.
git pull origin nombre_ramaSubir los cambios a un repositorio remoto
Envía tus commits al repositorio remoto.
git push origin nombre_ramaResolució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 tagCrear una etiqueta (tag)
Marca una tag
git tag nombre_etiquetaPublicar etiquetas en un repositorio remoto
Envía las etiquetas al repositorio remoto.
git push origin --tagsStash
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 stashListar stashes guardados
Muestra una lista de los cambios guardados.
git stash listAplicar los cambios guardados
Restaura los cambios del stash más reciente.
git stash applyEliminar el stash más reciente
Borra el último stash aplicado.
git stash dropOptimizació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 -fCompactar el historial de commits
Reescribe la historia de los últimos commits.
git rebase -i HEAD~nOptimizar el repositorio
Elimina objetos no referenciados y optimiza el tamaño del repositorio.
git gc