programa
Git es una herramienta esencial en el kit de cualquier desarrollador moderno, conocida por sus potentes capacidades de control de versiones. Creado por Linus Torvalds en 2005 para dar soporte al desarrollo del kernel de Linux, Git se ha convertido en la columna vertebral de infinidad de proyectos de software en todo el mundo. Su eficiencia y flexibilidad para gestionar versiones, junto con un sólido soporte para la colaboración, lo hacen imprescindible para equipos de cualquier tamaño.
Este artículo te prepara para entrevistas técnicas con una selección de las 20 preguntas de entrevista sobre Git más habituales, desde nivel inicial hasta avanzado. Tanto si estás empezando con Git como si quieres afianzar conocimientos, estas preguntas y respuestas te ayudarán a demostrar tu dominio y a bordar la entrevista.
Conviértete en Ingeniero de Datos
Preguntas básicas sobre Git
Si eres relativamente nuevo en Git, es probable que parte de las preguntas básicas de la entrevista traten conceptos y usos iniciales. Si necesitas refrescar ideas, no dejes de consultar el curso Introduction to Git de DataCamp.
¿Qué es un repositorio de Git?
Un repositorio de Git almacena los archivos de un proyecto y su historial de revisiones y facilita el control de versiones al registrar los cambios a lo largo del tiempo. Puede estar en local, en una carpeta de tu dispositivo, o alojado en una plataforma online como GitHub. Esto permite colaborar, volver a versiones anteriores y gestionar el desarrollo con comandos como commit, push y pull.
¿Cómo funciona Git?
Git funciona registrando los cambios realizados en los archivos y directorios de un proyecto, capturando "instantáneas" de su estado a medida que evoluciona. Puedes seguir las modificaciones, crear ramas para desarrollar en paralelo, fusionarlas y volver a estados anteriores si hace falta. También impulsa la colaboración y garantiza un control de versiones eficaz en los proyectos de software.
¿Qué es git add?
El comando git add se usa para preparar cambios que se incluirán en el siguiente commit. Deja listos los cambios, adiciones o eliminaciones realizadas en el directorio de trabajo, marcándolos para que formen parte de la próxima instantánea. Ten en cuenta que este comando no crea el commit; solo prepara los cambios.
¿Qué es git push?
El comando git push se utiliza para subir el contenido del repositorio local a un repositorio remoto. Transfiere los cambios ya confirmados desde tu repositorio local a uno remoto, normalmente en un servidor como GitHub o GitLab. Este comando facilita la colaboración al permitir que compartas tus cambios con el resto del equipo.
Puedes aprender más sobre git push y pull en nuestro tutorial específico.
¿Qué es git status?
El comando git status muestra el estado actual del repositorio. Indica qué archivos se han modificado, cuáles están preparados para el próximo commit y cuáles no están siendo seguidos. Te ayuda a llevar el control de tu trabajo e identificar los cambios que debes preparar o confirmar.
¿Qué es un commit en Git?
Un commit representa una instantánea de los cambios realizados en los archivos del repositorio en un momento concreto. Cuando haces commit en Git, guardas el estado actual de tus archivos y puedes añadir un mensaje descriptivo que explique los cambios (muy recomendable).
Cada commit genera un identificador único que permite seguir el historial de cambios del repositorio. Los commits son clave en el control de versiones: permiten volver a estados anteriores del proyecto, revisar el historial y colaborar compartiendo actualizaciones.

Descarga la chuleta de Git de DataCamp para preparar tu entrevista
¿Qué es el branching en Git?
El branching consiste en desviarse de la línea principal de desarrollo (normalmente llamada main y antes master) para trabajar en nuevas funcionalidades, correcciones o experimentos sin afectar al código principal. Permite que varias líneas de desarrollo paralelas convivan en el mismo repositorio.
Cada rama representa una línea de trabajo con su propio conjunto de commits, lo que permite a los desarrolladores avanzar en diferentes tareas simultáneamente. El branching facilita la colaboración, la experimentación y la organización del proyecto, ya que los cambios de una rama pueden fusionarse con la rama principal cuando estén listos y probados.
¿Qué es un conflicto en Git?
Los conflictos aparecen cuando varias personas realizan cambios incompatibles en la misma parte de un archivo, normalmente durante una fusión (merge) o un rebase. Git no puede resolverlos automáticamente y requiere que el usuario intervenga para decidir qué versión conservar.
Para resolver un conflicto, abre el archivo afectado: Git marcará las secciones en conflicto con los delimitadores <<<<<<<, ======= y >>>>>>>. Edita el archivo para quedarte con la versión correcta, elimina los marcadores y luego:
git add <resolved-file>
git commit
git mergetool pueden hacer este proceso más visual y sencillo.¿Qué es el merge en Git?
Hacer merge es una operación fundamental en Git para colaborar e integrar cambios entre ramas de un proyecto. En esencia, un merge combina los cambios de distintas ramas en una sola, normalmente la principal (por ejemplo, master o main).
El merge integra los cambios de una rama en otra y genera un nuevo commit que combina los historiales de ambas. Puedes aprender más sobre cómo resolver conflictos de merge en Git en nuestro tutorial aparte.
Certifícate en el puesto de Ingeniero de Datos de tus sueños
Nuestros programas de certificación te ayudan a destacar y a demostrar que tus aptitudes están preparadas para el trabajo a posibles empleadores.

Preguntas intermedias sobre Git
¿Qué es un remoto en Git?
Un remoto es un repositorio alojado en un servidor u otro equipo para colaborar y compartir código. Actúa como ubicación centralizada donde los desarrolladores pueden subir sus cambios locales y descargar los de otras personas.
Suele configurarse en plataformas como GitHub, GitLab o Bitbucket, y permite el desarrollo distribuido y el trabajo en equipo al ofrecer un punto común para almacenar y sincronizar el código entre múltiples colaboradores.
¿Cómo reviertes un commit que ya se ha hecho push y es público?
Puedes usar git revert <commit-hash> para revertir un commit que ya se ha publicado.
El proceso paso a paso sería:
1. Identifica el commit que quieres revertir encontrando su hash. Puedes usar git log para ver el historial y localizarlo.
2. Con el hash, ejecuta git revert seguido del identificador para crear un nuevo commit que deshaga los cambios introducidos por ese commit. Por ejemplo:
git revert <commit-hash>
3. Git abrirá un editor de texto para el mensaje del revert. Puedes editarlo si es necesario, guarda y cierra.
4. Tras guardar, Git creará un nuevo commit que deshace los cambios del commit especificado y lo añadirá al historial.
5. Por último, haz push del nuevo commit al remoto para que el revert sea público, con:
git push origin <branch-name>
Usar git revert crea un nuevo commit que deshace los cambios sin alterar el historial. Es un enfoque más seguro que git reset o git amend, que reescriben el historial y pueden causar problemas a quienes ya hayan hecho pull.
¿Qué es git stash?
git stash es un comando que guarda temporalmente los cambios del directorio de trabajo que aún no quieres confirmar. Permite aparcar tus modificaciones sin tener que hacer commit.
Es útil cuando cambias de rama pero no quieres confirmar ni perder tus cambios. Más tarde puedes aplicar lo guardado al directorio de trabajo o recuperarlo del stack de stashes para seguir trabajando.
¿Qué es git reflog?
git reflog muestra los registros de referencias, que anotan los cambios del puntero HEAD y el historial de commits por los que has pasado en el repositorio. Proporciona una lista cronológica de acciones recientes como commits, checkouts, merges y resets.
El reflog es muy útil para recuperar commits o ramas perdidas y entender la secuencia de acciones realizadas.
¿Cómo haces que una rama existente siga a una rama remota?
Para que una rama existente rastree una rama remota, usa el comando git branch con la opción --set-upstream-to o -u, seguido del nombre de la rama remota.
La sintaxis sería:
git branch --set-upstream-to=<remote-name>/<branch-name>
o
git branch -u <remote-name>/<branch-name>
Preguntas avanzadas sobre Git
¿Cómo gestionas múltiples configuraciones para distintos proyectos en Git?
Para manejar distintas configuraciones, utiliza git config junto con las banderas --global, --system o --local para ajustar parámetros a diferentes niveles. Como alternativa, emplea includeIf en la configuración de Git para incluir configuraciones específicas según la ruta del repositorio.
¿Cómo gestionas archivos grandes con Git?
Gestionar archivos grandes puede ser complicado por su impacto en el tamaño y rendimiento del repositorio. Usa Git LFS para almacenar los archivos pesados fuera del repositorio y mantener en Git punteros ligeros a ellos. Así reduces el tamaño y mejoras el rendimiento. Git LFS admite varios proveedores de almacenamiento e integra bien con los flujos de trabajo de Git.
¿Para qué sirve git submodule y cómo se actualiza?
El comando git submodule gestiona dependencias externas dentro de un repositorio Git. Te permite incluir repositorios externos como submódulos dentro de tu repositorio principal. Es útil para incorporar código de terceros manteniéndolo separado del código base de tu proyecto.
Para actualizar un submódulo, sigue estos pasos:
-
Ve al directorio del submódulo dentro del repositorio principal.
-
Usa
git fetchpara traer los últimos cambios del remoto del submódulo. -
Si quieres avanzar a la última confirmación de la rama seguida por el submódulo, usa
git pull. -
Si prefieres ir a un commit o rama concretos, usa
git checkoutcon el hash o el nombre de la rama. -
Cuando el submódulo esté en el estado deseado, confirma los cambios en el repositorio principal para reflejarlo.
¿Qué es git cherry-pick y cuándo lo usarías?
git cherry-pick te permite aplicar un commit concreto de una rama sobre otra, sin tener que fusionar la rama completa.
git cherry-pick <commit-hash>
main pero también necesitas ese fix en la rama release: puedes hacer cherry-pick de ese commit en lugar de fusionar todo main en release.También es útil cuando un commit se hizo por error en la rama equivocada: haz cherry-pick a la rama correcta y luego revierte el commit donde no debería estar.
¿Qué es git bisect y para qué se usa?
git bisect es una herramienta de depuración que usa búsqueda binaria para encontrar el commit específico que introdujo un bug. En vez de revisar commits uno a uno, le indicas a Git cuál commit es "bueno" (sin bug) y cuál es "malo" (con el bug), y Git irá marcando commits intermedios, reduciendo a la mitad el espacio de búsqueda hasta dar con el culpable.
git bisect start
git bisect bad # el commit actual tiene el bug
git bisect good <commit-hash> # este commit antiguo estaba bien
# Git hace checkout de un commit intermedio; lo pruebas y luego:
git bisect good # o git bisect bad
# repite hasta que Git identifique el primer commit defectuoso
git bisect reset # vuelve al estado original al terminar
Es mucho más rápido que buscar manualmente en repositorios grandes con cientos de commits.
¿Qué son los hooks de Git y cómo se utilizan?
Los hooks de Git son scripts que se ejecutan automáticamente en puntos concretos del flujo de trabajo. Viven en el directorio .git/hooks/ del repositorio y pueden escribirse en cualquier lenguaje de scripting.
Hay dos tipos:
-
Hooks del lado del cliente se ejecutan en tu máquina local — por ejemplo,
pre-commit(antes de crear un commit) ocommit-msg(valida el formato del mensaje). -
Hooks del lado del servidor se ejecutan en el servidor remoto — por ejemplo,
pre-receive(antes de aceptar los commits enviados).
Un uso habitual es un hook pre-commit para ejecutar automáticamente un linter o la batería de tests antes de permitir el commit. Así se refuerzan los estándares de calidad en todo el equipo.
Ten en cuenta que los hooks no se copian al clonar un repositorio, por lo que los equipos que dependen de ellos suelen compartirlos mediante un script aparte o con una herramienta como pre-commit (el paquete de Python).
Preguntas sobre conceptos de Git que suelen confundirse
¿Cuál es la diferencia entre git fetch y git pull?
La principal diferencia entre git fetch y git pull está en lo que hacen y cómo actualizan tu repositorio local.
git fetch trae cambios del repositorio remoto a tu repositorio local. Actualiza las ramas de seguimiento remoto (p. ej., origin/master) en tu repositorio, pero no toca tu directorio de trabajo ni fusiona nada en tu rama actual. Tras un fetch, puedes revisar los cambios del remoto sin afectar tu trabajo local.
git pull también recupera cambios del remoto, pero va un paso más allá: hace un fetch y a continuación un merge en tu rama actual en un solo paso. Es decir, equivale a git fetch seguido de git merge para incorporar los cambios del remoto.
¿Qué hace git reset?
El comando git reset restablece el HEAD actual a un estado concreto. Puede usarse para deshacer cambios, des-preparar archivos o mover el puntero HEAD a otro commit. Hay tres modos principales:
--soft: mueve HEAD a un commit específico manteniendo los cambios preparados. Los archivos siguen modificados en el directorio de trabajo, listos para volver a confirmarse.
--mixed: mueve HEAD a un commit específico y deshace el staging. Los archivos siguen modificados en el directorio de trabajo, pero ya no están preparados.
--hard: mueve HEAD a un commit específico y descarta todos los cambios del directorio de trabajo y del área de staging. Úsalo con cuidado: elimina definitivamente los cambios no confirmados.
Importante: Nunca uses git reset --hard sobre commits que ya se han publicado en una rama remota compartida. Reescribe el historial y causará problemas a tus compañeros. Para commits públicos, usa git revert.
¿Qué importancia tiene git push --force-with-lease frente a git push --force?
git push --force-with-lease es una forma más prudente de forzar un push que git push --force, porque evita sobreescribir por accidente cambios que alguien más haya subido al remoto.
Con git push --force empujas tus cambios sin importar si otros han actualizado la rama desde tu último fetch, lo que puede provocar pérdida de trabajo ajeno.
En cambio, git push --force-with-lease comprueba si la rama remota ha cambiado desde tu último fetch. Si ha cambiado, rechaza el push y así evita que sobreescribas cambios de otras personas.
¿Qué es git rebase y en qué se diferencia de git merge?
Tanto git rebase como git merge integran cambios de una rama en otra, pero lo hacen de forma distinta.
-
git mergecombina los historiales de dos ramas creando un nuevo "merge commit". Conserva todo el historial de cuándo se separaron y cuándo se unieron, útil para auditorías y transparencia del equipo. -
git rebasemueve o reproduce los commits de una rama encima de otra, produciendo un historial lineal y limpio sin commits de merge. Facilita la lectura del log, pero reescribe la historia. Por eso la regla de oro es: nunca hagas rebase de una rama en la que otras personas estén trabajando.
¿Cuál es la diferencia entre git clone y git fork?
Clonar crea una copia local de un repositorio remoto en tu máquina. Sigues conectado al mismo repositorio y puedes hacer push si tienes permisos.
git clone https://github.com/user/repo.git
El fork es el flujo estándar para contribuir a proyectos open source cuando no tienes acceso de escritura directo al repo original.
Cómo prepararte para una entrevista sobre Git
Explicar bien tus conocimientos y experiencia con Git en una entrevista es clave para demostrar tu dominio del control de versiones y la colaboración en equipos de desarrollo.
Aquí tienes algunos consejos para preparar tu entrevista técnica y comunicar tus habilidades con Git con claridad:
Entiende los fundamentos de Git
Asegúrate de dominar los fundamentos: repositorios, branching, merging, commits y comandos básicos como pull, push, clone y commit. Esta base sostendrá tu conversación durante la entrevista. También ayuda comprender bien principios esenciales como el control de versiones y las diferencias entre Git y otros sistemas.
Por último, familiarízate con metodologías de Git como Git Flow, GitHub Flow y GitLab Flow. Valora sus ventajas e inconvenientes e identifica cuándo conviene usar cada una.
Nuestra guía completa de Git es un buen punto de partida para repasar lo esencial.
Gana experiencia práctica
Cuanto más uses Git, más afianzarás tus conocimientos. La práctica regular mejora tu soltura con comandos y procedimientos. Intenta integrarlo en tu día a día para ganar exposición. Experimenta creando ramas, fusionándolas y resolviendo conflictos.
Si no tienes claro en qué proyectos trabajar para ganar práctica, contribuir a proyectos open source en plataformas como GitHub es una gran forma de familiarizarte con herramientas y flujos de colaboración estándar en la industria.
Aprende los problemas comunes y cómo resolverlos
Es normal encontrarse con problemas usando Git. Entre los más comunes están los conflictos de fusión, estados de HEAD desprendido, revertir cambios y recuperar commits perdidos. Diagnosticar incidencias mejora tu capacidad de resolución y te da una visión más profunda del funcionamiento interno de Git.
Al analizar mensajes de error y resolver activamente problemas, ganarás soltura para identificar y corregir incidencias con eficacia. Esta actitud proactiva reduce riesgos y refuerza tu confianza al gestionar flujos de control de versiones.
Practica entrevistas simuladas
Hacer simulacros de entrevistas te ayuda a detectar áreas de mejora en tus conocimientos de Git y en tu comunicación, para enfocar mejor la preparación.
Además, los simulacros te permiten afinar la resolución de problemas enfrentándote a escenarios realistas y ejercicios prácticos con Git. Esta práctica te dará confianza y te ayudará a explicar tus ideas con claridad durante la entrevista.
Conclusión
Git es un sistema de control de versiones muy potente y ampliamente utilizado para gestionar cambios de código, colaborar y mantener el historial de los proyectos. Familiarizarse con Git es clave en entrevistas técnicas: demuestra dominio de herramientas y flujos de trabajo esenciales, muestra tu capacidad de colaboración y tu habilidad para gestionar código en equipo.
Además, entender bien los conceptos y comandos de Git permite aplicar prácticas eficientes de control de versiones, garantizando la integridad del código, la continuidad del proyecto y un desarrollo más fluido. Por todo ello, conocer Git es fundamental para quienes aspiran a una carrera profesional sólida en ingeniería y desarrollo de software.
Para seguir aprendiendo, echa un vistazo a estos recursos:


