Repositorio Git — es un almacén del código fuente del proyecto donde Git rastrea cada cambio de archivos a lo largo del desarrollo. El repositorio contiene el historial completo de commits, ramas y etiquetas, lo que permite a los desarrolladores trabajar juntos en el código. Según Git, 2024, el repositorio es la base de cualquier sistema de control de versiones y se utiliza en millones de proyectos en todo el mundo.
Puntos clave
Repositorio Git — es una estructura de datos donde el sistema de control de versiones almacena metadatos y objetos que describen el historial de cambios de los archivos del proyecto. Cuando un desarrollador inicializa un repositorio con el comando git init, Git crea una carpeta oculta .git en la raíz del proyecto.
Dentro de esta carpeta se encuentran todos los objetos, referencias y archivos de configuración necesarios para el funcionamiento del sistema. El repositorio no está vinculado a una ubicación específica: el desarrollador puede crearlo localmente y luego vincularlo a un servidor remoto.
Git utiliza un modelo de repositorio distribuido: cada miembro del proyecto tiene una copia completa del historial en su ordenador. Esto significa que la mayoría de las operaciones (commit, ver historial, crear ramas) se realizan localmente sin contactar al servidor.
Según la documentación de Git, la arquitectura distribuida hace que el sistema sea resistente a fallos: si el servidor falla, cualquier repositorio local puede servir como fuente para restaurar el historial completo del proyecto.
Repositorio local — es una copia del proyecto en el ordenador del desarrollador. Contiene todo el historial de commits, ramas y etiquetas, y permite realizar operaciones de commit, branch, merge y rebase sin conexión a la red.
Repositorio remoto — se aloja en un servidor y sirve como punto de sincronización para todos los miembros del equipo. Los desarrolladores envían sus cambios con el comando git push y recogen los cambios de otros con git pull.
La conexión entre el repositorio local y el remoto se configura mediante remote origin — la URL del servidor que se almacena en la configuración de Git. Un repositorio local puede estar vinculado a varios remotos, lo que es útil al trabajar con forks.
La principal ventaja de este modelo es que el desarrollador puede trabajar en el código sin conexión y sincronizar los cambios solo cuando esté listo para enviar el resultado.
| Característica | Local | Remoto |
|---|---|---|
| Ubicación | En el ordenador del desarrollador | En un servidor (GitHub, GitLab) |
| Acceso sin red | Acceso completo a todas las operaciones | No disponible sin conexión |
| Sincronización | Push/Pull con el remoto | Recibe push de los locales |
| Copia de seguridad | No protegido contra pérdida de datos | Almacenado en servidor con backups |
El modelo de almacenamiento de Git es fundamentalmente diferente al de otros sistemas de control de versiones. En lugar de almacenar una lista de cambios (deltas) entre versiones, Git guarda instantáneas completas de todos los archivos del proyecto en el momento de cada commit.
Cada objeto en el repositorio se identifica mediante un hash SHA-1 único de 40 caracteres. Si el contenido de un archivo no ha cambiado entre commits, Git no crea un nuevo objeto, sino que reutiliza el existente — esto ahorra espacio.
Git utiliza cuatro tipos de objetos: blob (contenido del archivo), tree (estructura del directorio), commit (instantánea con metadatos) y tag (referencia con nombre a un commit). Todos los objetos se almacenan en la carpeta .git/objects.
Según Git Internals, el modelo de objetos de Git garantiza la integridad de los datos: cualquier cambio en el contenido de un archivo genera un nuevo hash, lo que hace imposible modificar el historial sin ser detectado.
La carpeta .git es el corazón del repositorio. Sin ella, Git no puede rastrear cambios y un directorio normal sigue siendo solo un conjunto de archivos. Comprender la estructura de esta carpeta ayuda a diagnosticar problemas con el repositorio.
El archivo HEAD merece especial atención. En estado normal contiene una referencia simbólica a una rama, por ejemplo ref: refs/heads/main. En estado detached HEAD apunta directamente a un commit — esto significa que los nuevos commits no estarán vinculados a ninguna rama.
Trabajar con un repositorio Git implica un conjunto de operaciones básicas que el desarrollador realiza a diario. Cada operación cambia el estado del repositorio añadiendo nuevos objetos o moviendo referencias.
Las operaciones push y pull son las únicas que requieren conexión al servidor remoto. Todas las demás operaciones se realizan completamente en local, lo que garantiza una alta velocidad incluso con un gran volumen de historial.
Cada archivo en el repositorio pasa por cuatro estados: untracked (no rastreado), modified (modificado), staged (preparado) y committed (confirmado). Git solo rastrea los archivos que se han añadido explícitamente mediante git add o que ya están en el historial de commits.
Comprender este modelo es la clave para trabajar eficazmente con Git. El desarrollador puede preparar selectivamente solo una parte de los archivos modificados para el commit, creando commits lógicamente completos con una descripción clara.
Los repositorios remotos suelen alojarse en plataformas especializadas que proporcionan interfaz web, sistema de control de acceso y herramientas adicionales para el desarrollo colaborativo.
La elección de la plataforma depende del tamaño del equipo, los requisitos de privacidad y las integraciones necesarias. Para el desarrollo móvil, a menudo se elige GitHub por su amplio soporte comunitario y su integración con herramientas CI/CD para iOS y Android.
Consideremos un escenario práctico: un desarrollador clona un repositorio existente, crea una nueva rama, realiza cambios y los envía al servidor. Cada comando demuestra el trabajo con diferentes componentes del repositorio.
# Clonar un repositorio remoto
git clone https://github.com/user/mobile-app.git
# Navegar al directorio del proyecto
cd mobile-app
# Crear una nueva rama feature y cambiar a ella
git checkout -b feature/auth
# Verificar el estado de los archivos modificados
git status
# Agregar todos los cambios al área de staging
git add .
# Crear un commit con descripción
git commit -m "Add authentication module"
# Enviar cambios al repositorio remoto
git push origin feature/auth
El comando git status es uno de los más útiles en el trabajo diario. Muestra qué archivos han sido modificados, cuáles están preparados para el commit y cuáles no son rastreados por Git en absoluto.
Para analizar el historial del repositorio se utiliza el comando git log con varios indicadores de formato. Muestra la cronología de los commits, sus autores, fechas e identificadores SHA-1.
# Ver el historial con visualización del grafo de ramas
git log --oneline --graph --all
# Ver los cambios en un commit específico
git show a1b2c3d
# Comparar el estado actual con el último commit
git diff HEAD
# Ver el historial de un archivo específico
git log --follow src/MainActivity.kt
El indicador --graph muestra un gráfico ASCII de las bifurcaciones, lo que es especialmente útil en repositorios con trabajo activo en varias ramas. Para proyectos móviles con lanzamientos frecuentes, un gráfico visual ayuda a evaluar rápidamente la estructura del desarrollo.
Preguntas frecuentes
Un repositorio es un almacén técnico de código con historial de cambios. Un proyecto es un concepto más amplio que incluye el repositorio, el sistema de gestión de tareas, la documentación y los procesos de desarrollo. Un proyecto puede contener varios repositorios.
Cree un nuevo repositorio a través de la interfaz web de GitHub haciendo clic en el botón New. Especifique un nombre, descripción y nivel de acceso. Luego clone el repositorio en su máquina local o vincúlelo a un repositorio local existente mediante git remote add origin.
Si un repositorio remoto se ha eliminado del servidor pero al menos un desarrollador tiene una copia local, el repositorio se puede restaurar. Simplemente cree un nuevo repositorio remoto y ejecute git push --force desde la copia local con todo el historial.
Un fork es una copia de un repositorio ajeno en su cuenta. Obtiene una copia completa del historial y puede realizar cualquier cambio sin afectar al original. Los forks se utilizan para participar en proyectos open-source mediante Pull Requests.
Use git gc para comprimir objetos y eliminar datos inalcanzables. Elimine archivos grandes del historial mediante git filter-branch o git filter-repo. Para proyectos con archivos binarios, considere Git LFS (Large File Storage).
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también