🔹 Nivel: Fundamental a Avanzado
🔹 Tiempo estimado de estudio: 2 - 4 horas
🔹 Aplicación: Entrevistas Técnicas / Desarrollo de Software / Colaboración en Equipos
Bienvenido a la guía definitiva de Git, diseñada para entrevistas técnicas y como referencia práctica para ingenieros de software. Aquí encontrarás preguntas frecuentes de entrevistas junto con respuestas detalladas y ejemplos de código.
“El código sin control de versiones es como construir sin un plano.” - Todos los ingenieros de Silicon Valley
Un Sistema de Control de Versiones (VCS) es una herramienta que permite realizar un seguimiento de los cambios en el código fuente a lo largo del tiempo. Existen dos tipos principales:
🔥 Ejemplo Visual:
Desarrollo sin VCS:
- archivo_v1.js
- archivo_v2_final.js
- archivo_v3_ahora_sí_final.js
Desarrollo con Git:
- archivo.js (seguimiento con commits y branches)
Git es un Sistema de Control de Versiones Distribuido (DVCS) diseñado para manejar proyectos de software con eficiencia y velocidad. Es usado en todo el mundo por empresas como Google, Microsoft, Netflix y Facebook.
✔ Distribuido → Cada usuario tiene una copia completa del historial del proyecto.
✔ Velocidad → Git es extremadamente rápido en comparación con otros VCS.
✔ Seguridad → Cada cambio es registrado de forma segura mediante SHA-1.
✔ Flujo de trabajo flexible → Git permite diversas estrategias de colaboración como Git Flow o GitHub Flow.
🔹 Comando para verificar la instalación de Git:
git --version
| Característica | Git | GitHub | |————–|—–|——–| | ¿Qué es? | Un sistema de control de versiones | Plataforma de alojamiento de repositorios Git | | Almacenamiento | Local y distribuido | En la nube | | Uso principal | Control de versiones de código | Colaboración y gestión de proyectos | | Accesibilidad | Línea de comandos y GUI | Interfaz web y Git CLI |
💡 GitHub no es Git → GitHub es solo una plataforma que alberga proyectos que usan Git.
Aquí tienes una lista de comandos fundamentales:
Comando | Descripción |
---|---|
git init |
Inicializa un nuevo repositorio Git |
git clone <repo> |
Clona un repositorio existente |
git status |
Muestra el estado del repositorio |
git add <archivo> |
Agrega archivos al área de staging |
git commit -m "Mensaje" |
Confirma los cambios en el historial |
git push origin main |
Sube los cambios al repositorio remoto |
git pull origin main |
Descarga los cambios más recientes |
🔥 Ejemplo de uso en un flujo de trabajo real:
git init
git add .
git commit -m "Primer commit"
git branch -M main
git remote add origin https://github.com/user/repo.git
git push -u origin main
Un Merge Conflict ocurre cuando Git no puede fusionar automáticamente cambios en el mismo archivo desde diferentes ramas.
🔥 Ejemplo de Conflicto:
<<<<<<< HEAD
console.log("Hola mundo desde la rama Main");
=======
console.log("Hola mundo desde la rama Feature");
>>>>>>> feature-branch
💡 Solución:
git add archivo.js
.git commit -m "Resolviendo conflicto"
.El comando git stash
permite guardar cambios temporalmente sin comprometerlos en un commit.
🔥 Ejemplo de uso:
git stash # Guarda los cambios
git stash list # Muestra los stashes guardados
git stash pop # Restaura el último stash
💡 Situación común:
Tienes cambios locales, pero necesitas cambiar de rama sin perder tu trabajo. git stash
guarda tu progreso y puedes recuperarlo después.
| Acción | Git Merge | Git Rebase | |——–|———-|————| | ¿Qué hace? | Combina ramas manteniendo el historial | Aplica cambios sobre una rama base | | Historial | Puede volverse complejo con múltiples merges | Se mantiene más limpio | | Uso recomendado | Trabajo colaborativo en equipos grandes | Mantener un historial lineal y ordenado |
🔥 Ejemplo de Git Rebase:
git checkout feature-branch
git rebase main
Esto mueve la feature-branch
sobre main
, evitando commits de merge innecesarios.
📖 Documentación Oficial:
🎥 Videos Recomendados:
🔗 Cursos Recomendados:
Git es una herramienta esencial para cualquier programador. Dominarlo no solo te ayudará en entrevistas, sino que hará que tu flujo de trabajo sea más eficiente y profesional. 🚀
Si esta guía te ayudó, ¡no dudes en ⭐ darle un Star al repositorio!
💡 “El conocimiento es poder, pero compartirlo es aún más poderoso.” - Anónimo