Las 50 preguntas y respuestas principales de la entrevista GIT (2026)

¿Te preparas para una entrevista sobre Git? Es hora de explorar las preguntas esenciales que pondrán a prueba tu experiencia en control de versiones. Comprensión Preguntas de entrevista de GIT Ayuda a revelar la profundidad en la resolución de problemas, los hábitos de colaboración y la eficiencia en la gestión del flujo de trabajo.

Una carrera en control de versiones y colaboración ofrece grandes oportunidades para profesionales con sólida experiencia técnica y conocimientos especializados. Desde recién graduados hasta ingenieros sénior, dominar conceptos básicos y avanzados ayuda a superar con éxito sesiones de preguntas y respuestas complejas. Trabajar en este campo mejora las habilidades analíticas, el trabajo en equipo y la experiencia técnica práctica, cualidades muy valoradas por gerentes y líderes de equipo.

Basada en las opiniones de más de 75 profesionales, entre los que se incluyen líderes técnicos, gerentes y desarrolladores, esta guía consolida las principales perspectivas de entrevistas de GIT en todos los sectores, lo que garantiza credibilidad, precisión práctica y una cobertura integral para todos los niveles de experiencia.

Preguntas y respuestas de la entrevista de GIT

Las 50 preguntas y respuestas más frecuentes en entrevistas de GIT

1) ¿Qué es Git y en qué se diferencia de otros sistemas de control de versiones?

Git es un sistema de control de versiones distribuido diseñado para rastrear los cambios en el código fuente durante el desarrollo de software. A diferencia de los sistemas centralizados como SVN o CVS, Git permite que cada desarrollador tenga una copia completa del repositorio, incluyendo su historial completo. Este modelo descentralizado mejora la velocidad, la flexibilidad y la fiabilidad.

Ejemplo: Al clonar un repositorio Git, puedes trabajar sin conexión y realizar confirmaciones localmente, a diferencia de SVN, donde se requiere una conexión a Internet para cada confirmación.

Factor Git SVN
Arquitectura Distribuido Centralizado
Speed (Rapidez) Más rápido Más lento
Trabajo sin conexión Soportado No se admite
Derivación Ligeros. Pesado y lento

👉 Descarga gratuita del PDF: Preguntas y respuestas de la entrevista de GIT


2) Explique el flujo de trabajo y el ciclo de vida de un archivo en Git.

El ciclo de vida de un archivo en Git representa cómo un archivo pasa por diferentes estados en un repositorio.

En Git, los archivos pueden existir en uno de cuatro estados principales: Sin seguimiento, Modificado, Escenificado y Compromiso.

  1. Sin seguimiento: Archivos recién creados que aún no se han añadido a Git.
  2. Modificado: Archivos que han sido editados desde la última confirmación.
  3. Escenificado: Archivos añadidos usando git add y listo para comprometerse.
  4. Comprometido: Archivos guardados permanentemente en el repositorio con git commit.

Ejemplo: Un desarrollador crea un archivo nuevo → se ejecuta git add → y luego lo confirma. Esta secuencia completa el ciclo de vida del archivo, desde que no está rastreado hasta que está confirmado.


3) ¿Cómo funcionan las ramas y las fusiones en Git?

La ramificación permite que varios desarrolladores trabajen simultáneamente en funcionalidades distintas sin afectar al código principal. Cada rama representa una línea de desarrollo independiente.

La fusión combina los cambios de una rama en otra, generalmente integrando las ramas de características de nuevo en la rama principal.

Ejemplo: Si crea un feature/login rama, trabajar en ella de forma independiente y luego fusionarla con main, consolidas tu nueva función de forma segura.

Comando Proposito
git branch feature Crea una nueva rama
git checkout feature Cambia a la rama
git merge feature Se fusiona con la rama principal

4) ¿Cuáles son los diferentes tipos de objetos Git?

Git almacena los datos como objetos en su base de datos interna. Los cuatro tipos principales de objetos son:

  1. Gota: Almacena datos de archivos.
  2. Árbol: Representa directorios y estructuras de archivos.
  3. Cometer: Registra los cambios con metadatos como autor, fecha y commit principal.
  4. Etiqueta: Marca un punto específico en la historia, a menudo utilizado para lanzamientos.

Estos objetos crean la integridad e inmutabilidad de Git, asegurando que cada commit sea identificable de forma única mediante un hash SHA-1.


5) ¿Cuál es la diferencia entre Git fetch y Git pull?

git fetch Descarga los cambios de un repositorio remoto, pero no los fusiona automáticamente. Actualiza tus ramas locales de seguimiento remoto.

git pull Realiza tanto la obtención como la fusión en un solo paso.

Comando Descripción Caso de uso
git fetch Descargas cambia sin fusionar Cuando quieras inspeccionar las actualizaciones antes de fusionarlas
git pull Descarga y combina los cambios automáticamente Cuando se desea una sincronización inmediata

Ejemplo: Use git fetch al colaborar, revisar los cambios de otros antes de fusionarlos.


6) ¿Cómo garantiza Git la integridad de los datos?

Git garantiza la integridad de los datos mediante Hash SHA-1Cada commit, árbol y blob se identifica mediante un hash único de 40 caracteres. Esto garantiza que incluso un solo cambio de bit altere el hash, evitando así la corrupción o la manipulación.

Además, Git utiliza un gráfico acíclico dirigido (DAG) Estructura donde los commits hacen referencia a sus commits padres, asegurando un historial consistente y rastreable.

Ejemplo: Si el contenido de un archivo cambia, su valor SHA-1 cambia, por lo que Git lo reconoce inmediatamente como una nueva versión.


7) Explica Git Rebase y en qué se diferencia de Git Merge.

Ambos git merge y git rebase Integran los cambios de una rama en otra, pero difieren en su enfoque.

  • Unir: Crea una nueva confirmación de fusión que combina los historiales.
  • Rebase: Mueve o reproduce los commits de una rama a otra, creando un historial lineal.
Factor ir rebase
Confirmar historial No lineal Lineal
Se ha creado un nuevo commit No
Caso de uso Preserva la historia Historial de limpieza

Ejemplo: Use git rebase para mantener un historial de proyectos limpio, mientras git merge Es mejor para sucursales públicas compartidas.


8) ¿Qué son los hooks de Git y cuáles son sus beneficios?

Los hooks de Git son scripts personalizados que se activan mediante eventos específicos de Git, como commits, merges o pushes. Ayudan a aplicar estándares de codificación y a automatizar flujos de trabajo.

Tipos de ganchos:

  • Ganchos del lado del cliente: Ejecutar en operaciones locales (por ejemplo, pre-commit).
  • Ganchos del lado del servidor: Ejecutar acciones en repositorios remotos (por ejemplo, pre-recepción).

Beneficios:

  • Evitar confirmaciones con errores de formato.
  • Automatice el análisis o las pruebas de código.
  • Garantizar flujos de trabajo coherentes entre los equipos.

Ejemplo: A pre-commit El hook puede rechazar commits si fallan las pruebas unitarias.


9) ¿Cuáles son las ventajas y desventajas de usar Git?

Aspecto Ventajas Desventajas
Rendimiento Rápido y eficiente para ramificaciones/fusiones Puede ser complejo para principiantes.
Colaboración Permite el desarrollo distribuido Posibles conflictos de fusión
Flexibilidad Trabaja sin conexión Requiere configuración y aprendizaje.
Almacenaje Gestiona proyectos de gran envergadura. El almacenamiento puede crecer rápidamente

En general, el modelo distribuido de Git, la integridad de los datos y su flexibilidad lo convierten en el estándar de la industria, a pesar de la curva de aprendizaje para los nuevos desarrolladores.


10) ¿Cómo se resuelven los conflictos de fusión en Git?

Los conflictos de fusión se producen cuando Git no puede reconciliar automáticamente los cambios entre ramas.

Pasos para resolver:

  1. Identificar archivos conflictivos con git status.
  2. Abra el archivo, localice los marcadores de conflicto (<<<<<<<, =======, >>>>>>>).
  3. Edite manualmente el archivo para seleccionar o combinar los cambios.
  4. Preparar el archivo usando git add.
  5. Confirma la fusión resuelta con git commit.

Ejemplo: Cuando dos desarrolladores editan la misma línea en un archivo en ramas diferentes, Git genera un conflicto durante la fusión, lo que requiere una resolución manual.


11) ¿Cuál es la diferencia entre git reset, git revert y git checkout?

Estos tres comandos modifican el historial de Git de manera diferente y cumplen propósitos distintos.

Comando Función Impacto de los datos Caso de uso
git reset Retrocede el puntero HEAD a una confirmación específica. Historial de confirmaciones de cambios Deshacer confirmaciones localmente
git revert Crea una nueva confirmación que deshace los cambios anteriores. Conserva el historial de compromisos Deshacer de forma segura los commits en ramas compartidas
git checkout Cambia de rama o restaura archivos No afecta al historial de confirmaciones Cambiar de rama o descartar cambios locales

Ejemplo: Si por error introdujo datos confidenciales, utilice git revert para deshacerlo de forma segura sin alterar el historial de confirmaciones.

Use git reset --hard Solo para correcciones locales antes de la publicación.


12) Explique los tipos de reinicios en Git.

Git proporciona tres tipos principales de reinicios en función de hasta qué punto se quieran deshacer los cambios.

Categoría Comando Comportamiento
Soft git reset --soft <commit> Mueve HEAD pero mantiene intactos el índice y el directorio de trabajo.
Mixto git reset --mixed <commit> Mueve HEAD y reinicia el índice; los cambios permanecen en el directorio de trabajo.
Difícil git reset --hard <commit> Restablece completamente HEAD, el índice y el directorio de trabajo.

Ejemplo: Si realizaste cambios prematuramente, git reset --soft HEAD~1 te permite volver a confirmar después de la modificación.


13) ¿Qué es Git Stash y cuándo deberías usarlo?

git stash Almacena temporalmente los cambios no confirmados, lo que te permite cambiar de rama sin perder el trabajo.

Esto resulta especialmente útil al realizar varias tareas a la vez o cuando se necesita revisar otra rama con urgencia.

Comandos comunes:

  • git stashGuarda tus modificaciones locales.
  • git stash popRestaura los cambios guardados.
  • git stash listMuestra todos los alijos guardados.

Ejemplo: Si estás a mitad de la implementación de una función y surge un problema en producción, guarda los cambios, soluciona el problema y luego vuelve a aplicar el trabajo guardado.


14) ¿Cómo maneja Git los repositorios remotos?

Un repositorio remoto en Git es una versión de tu proyecto alojada en internet o en una red, utilizada para la colaboración entre desarrolladores.

Comandos remotos comunes:

Comando Descripción
git remote add origin <url> Enlace el repositorio local a un repositorio remoto
git push Envía confirmaciones al repositorio remoto
git pull Recupera y fusiona los cambios
git fetch Recupera los cambios, pero no los combina.

Ejemplo: Los desarrolladores suelen clonar un repositorio remoto de plataformas como GitHub o GitLab para contribuir a proyectos compartidos.


15) ¿Qué son las etiquetas Git y por qué son importantes?

Las etiquetas son punteros a confirmaciones específicas, que se utilizan a menudo para marcar puntos de lanzamiento (por ejemplo, v1.0, v2.1).

Proporcionan estabilidad al hacer referencia a versiones inmutables del código base.

Tipos de etiquetas:

  1. Etiquetas ligeras: Referencias simples a commits.
  2. Etiquetas anotadas: Almacenar metadatos (autor, mensaje, fecha).
Comando Proposito
git tag v1.0 Crea una etiqueta ligera
git tag -a v2.0 -m "Release 2.0" Crea una etiqueta anotada
git push origin --tags Envía todas las etiquetas al control remoto

Ejemplo: Los equipos de lanzamiento utilizan etiquetas anotadas para empaquetar e implementar versiones estables del producto.


16) ¿Qué es Git Cherry-Pick y cómo es útil?

git cherry-pick permite la integración selectiva de commits específicos de una rama en otra.

Esto resulta útil cuando se desea aplicar una corrección de errores o una función específica sin fusionar toda la rama.

Ejemplo: Puedes aplicar una solución desde feature/bugfix a main mediante:

git cherry-pick <commit-hash>

Beneficios:

  • Control preciso sobre la integración de confirmaciones.
  • Evita fusiones de código innecesarias.
  • Mantiene un historial más limpio en las ramas críticas.

17) ¿Qué es Git Squash y cuáles son sus beneficios?

En Git, la técnica de squash combina múltiples commits en uno solo, creando un historial de commits simplificado y más limpio.

comando:

git rebase -i HEAD~3

Luego elige el squash Opción para los commits que deseas fusionar.

Beneficios:

  • Crea una historia concisa.
  • Facilita la revisión de las solicitudes de extracción.
  • Reduce el desorden generado por confirmaciones menores.

Ejemplo: Antes de fusionar una rama de funcionalidad, los desarrolladores suelen combinar todos los commits pequeños en un único commit significativo.


18) ¿Cómo se puede revertir un commit enviado en Git?

Una vez que se envía una confirmación a un repositorio remoto, no se puede eliminar de forma segura, pero se puede revertir utilizando:

git revert <commit-hash>
git push origin main

Diferencia entre Reset y Revert:

Factor Restablecer Revert
Nuestra historia reescribe la historia Preserva la historia
Seguridad No es seguro para repositorios compartidos. Seguro para sucursales públicas
Uso Deshacer local Deshacer remoto

Ejemplo: Si ya existe una confirmación errónea en GitHub, utilice git revert en lugar de git reset para mantener una historia compartida coherente.


19) ¿Cuál es la diferencia entre Git y GitHub?

Git es un herramienta de control de versiones, mientras que GitHub es un plataforma basada en la nube para alojar repositorios Git.

Aspecto Git GitHub
Nature Herramienta de línea de comandos servicio basado en web
Función Realiza un seguimiento de los cambios de código localmente Permite la colaboración remota
Requisito de internet Opcional Obligatorio
Propiedad del activo: Código abierto (por Linus Torvalds) Propiedad de Microsoft

Ejemplo: Un desarrollador utiliza Git para gestionar las versiones del código fuente localmente y GitHub para compartir y revisar el código con sus compañeros de equipo.


20) ¿Cuáles son las diferentes estrategias de fusión de Git?

Git ofrece diversas estrategias de fusión dependiendo de cómo quieras combinar los cambios.

Estrategia Descripción Caso de uso
recursiva Por defecto; fusiona dos ramas Fusiones estándar
Soportar Mantiene los cambios de la rama actual Descartando los cambios entrantes
De ellos Conserva los cambios de la rama entrante Anulación de cambios locales
Pulpo Fusiona varias ramas simultáneamente Ramas de integración

Ejemplo: Durante integraciones complejas, los desarrolladores pueden usar el recursive estrategia para fusiones estándar o ours priorizar los cambios locales.


21) ¿Qué es un HEAD desvinculado en Git y cómo se soluciona?

A CABEZA desprendida ocurre cuando el HEAD El puntero no apunta a una rama, sino a una confirmación específica. Esto ocurre al cambiar directamente a una confirmación anterior mediante:

git checkout <commit-hash>

En este estado, cualquier nuevo commit no está asociado a una rama y puede perderse si no se referencia correctamente.

Cómo solucionarlo:

  1. Crea una nueva rama a partir del estado separado:
    git checkout -b temp-branch
  2. Luego, confirma o fusiona como de costumbre.

Ejemplo: Al probar una versión anterior del código, es posible que introduzcas un HEAD separado. Crea siempre una rama para conservar los cambios.


22) ¿Cuál es el propósito de git reflog y cuándo se debe usar?

git reflog es un comando poderoso que rastrea todos los movimientos del HEAD puntero, incluso aquellos que no forman parte del historial de ramas visible. Actúa como red de seguridad para recuperar commits perdidos.

Uso:

git reflog
git checkout <commit-hash>

Ejemplo:

Si accidentalmente ejecutas git reset --hard y perder los commits recientes, git reflog te permite encontrarlos y restaurarlos.

Beneficios:

  • Recupera el trabajo perdido tras un rebase o reset defectuoso.
  • Proporciona un historial de navegación de commits detallado.
  • Mejora la seguridad en flujos de trabajo complejos.

23) Explique los submódulos de Git y sus casos de uso.

A Submódulo de Git Te permite incluir un repositorio Git como subcarpeta dentro de otro. Se utiliza al gestionar proyectos que dependen de otros repositorios.

Comandos comunes:

git submodule add <repo-url>
git submodule update --init

Ejemplo: Una aplicación web puede incluir un módulo de autenticación compartido como submódulo de Git en varios proyectos.

Ventajas Desventajas
Promoreutilización del código tes Puede complicar los flujos de trabajo de CI/CD.
Mantiene historiales independientes Requiere actualizaciones manuales
Garantiza la coherencia de la versión Curva de aprendizaje superior

24) ¿Qué son los flujos de trabajo de Git y cuáles son los diferentes tipos?

Los flujos de trabajo de Git definen el enfoque estructurado que los equipos utilizan para colaborar con Git. Los tipos más populares son:

Workflow Descripción Caso de uso
Git Flow Utiliza las ramas de características, desarrollo y lanzamiento. Proyectos a gran escala
Flujo de GitHub Flujo simplificado mediante ramas principales y de características Despliegue continuo
Flujo de GitLab Combina Git Flow con la integración de CI/CD. proyectos orientados a DevOps
Basado en el tronco Los desarrolladores se comprometen con una única rama compartida. Equipos ágiles de entrega rápida

Ejemplo: Las startups a menudo adoptan Basado en el tronco flujos de trabajo para mayor velocidad, mientras que las empresas prefieren Git Flow para lanzamientos controlados.


25) ¿Qué es Git Bisect y cómo ayuda en la depuración?

git bisect Es una potente herramienta de depuración que utiliza la búsqueda binaria para identificar la confirmación que introdujo un error.

Flujo de trabajo de ejemplo:

  1. Inicio de la bisección: git bisect start
  2. Marcar el commit actual como malo: git bisect bad
  3. Marcar último commit bueno conocido: git bisect good <commit>
  4. Git comprueba automáticamente el punto medio.
  5. Prueba y continúa hasta que se encuentre la confirmación defectuosa.

Beneficios:

  • Acelera el rastreo de errores en grandes bases de código.
  • Reduce la comprobación manual de confirmaciones.
  • Ideal para pruebas de regresión CI/CD.

26) ¿Cuál es la diferencia entre un conflicto de fusión de Git y un conflicto de rebase?

Ambos problemas surgen cuando Git no puede reconciliar automáticamente las diferencias de código, pero ocurren en contextos diferentes.

Categoría Cuando ocurre Resolución
Conflicto de fusión Durante git merge entre ramas Resolver en la rama de destino
Conflicto de rebase Durante git rebase mientras se reproducen los commits Resolver mientras se realiza el rebase, luego continuar con git rebase --continue

Ejemplo: Si la misma línea se edita de forma diferente en dos ramas, se produce un conflicto de fusión; durante el rebase, cambios similares también provocan conflictos de rebase.


27) ¿Cómo se puede integrar Git en las canalizaciones de CI/CD?

Git constituye la base de los flujos de trabajo modernos de CI/CD al activar procesos automatizados en cada confirmación o solicitud de extracción.

Ejemplo de integración:

  • Compromiso Push → Activa una canalización de CI (a través de Jenkins, GitHub Actions o GitLab CI).
  • Construir y probar → Las pruebas automatizadas validan la confirmación.
  • Despliegue → Los cambios se envían al entorno de pruebas o producción.

Beneficios:

  • Garantiza despliegues uniformes.
  • Permite ciclos de retroalimentación rápidos.
  • Reduce el error humano en las versiones.

Ejemplo: GitHub Actions puede probar e implementar automáticamente un proyecto cuando se envían cambios al repositorio. main .


28) ¿Cuál es la diferencia entre git clean y git reset?

Comando Proposito <b></b><b></b> Ejemplo
git clean Elimina archivos no rastreados Directorio de trabajo git clean -f -d
git reset Mueve el puntero HEAD Confirmaciones, índice y árbol de trabajo git reset --hard HEAD~1

Ejemplo: Si tu espacio de trabajo contiene archivos temporales o generados que Git no rastrea, usa git cleanSi necesitas deshacer confirmaciones, usa git reset.

Consejo: Siempre revise con git clean -n antes de ejecutar para evitar borrados accidentales.


29) ¿Qué es Git Reflog frente a Git Log?

Si bien ambas muestran el historial de confirmaciones, cumplen propósitos diferentes.

Comando Tracks Incluye confirmaciones eliminadas Caso de uso
git log Historial de confirmaciones visible No RevVer el progreso del proyecto
git reflog Todos los movimientos de la cabeza Recuperar commits perdidos

Ejemplo: Tras borrar accidentalmente una rama, puedes usar git reflog para localizar y recuperar su último commit, que no aparecería en git log.


30) ¿Cuáles son algunas de las mejores prácticas para usar Git de manera efectiva en equipos grandes?

  1. Utilice las convenciones de nomenclatura de ramas: Sigue un patrón como feature/login-ui or bugfix/payment.
  2. Comprométete con frecuencia pero con significado: Mantén cada confirmación centrada en un único cambio lógico.
  3. Escribe. DescriptMensajes de confirmación: Utilice el modo imperativo, por ejemplo: "Fix user login validation."
  4. Rebase antes de la fusión: Mantiene limpio el historial de commits.
  5. Utilice solicitudes de extracción para Revopiniones: PromoPrueba la colaboración y la calidad del código.
  6. Lanzamientos de etiquetas de forma constante: Facilita el control de versiones y la reversión.
  7. Automatizar las pruebas mediante CI/CD: Garantiza una integración estable y lanzamientos más rápidos.

Ejemplo: En el desarrollo empresarial, el uso estructurado de Git previene conflictos y simplifica la gestión de versiones.


31) ¿Qué es Git Internals y cómo almacena Git los datos?

Los componentes internos de Git se refieren a la arquitectura de bajo nivel que impulsa la funcionalidad de Git. Git almacena todo (archivos, directorios, commits) como objetos en el cuadro .git/objects directorio. Estos objetos se identifican por Hashes SHA-1 y categorizado como blobs, árboles, commits y etiquetas.

Ciclo de vida del almacenamiento de datos:

  1. Cuando se añade un archivo, su contenido se almacena como un blob.
  2. A tree Estructura de archivos de mapas.
  3. A commit vincula árboles y metadatos.
  4. A tag hace referencia a los commits de las versiones.

Ejemplo: Correr git cat-file -p <hash> te permite inspeccionar objetos Git directamente.

Este diseño garantiza integridad de los datos, trazabilidad de versiones y rendimiento ligero, lo que hace que Git sea altamente eficiente en comparación con sistemas más antiguos como SVN.


32) ¿Cuál es la diferencia entre Git Rebase Interactive y Git Merge?

Factor Git Rebase interactivo (git rebase -i) Fusión Git
Proposito Permite editar, reordenar y combinar commits. Combina historias
Nuestra historia reescribe la historia Conserva todos los commits
Caso de uso Limpieza antes de la fusión Manteniendo la línea de tiempo original

Ejemplo: Antes de fusionar una rama de características, un desarrollador puede usar:

git rebase -i main

para eliminar commits innecesarios y producir un historial más limpio y lineal.

ir es más seguro para las sucursales colaborativas, mientras que rebase Mejora la legibilidad de los flujos de trabajo de desarrollo privados.


33) ¿Qué es Sparse Checkout en Git y cuáles son sus beneficios?

Pago parcial Permite a los desarrolladores clonar o trabajar solo con un subconjunto de archivos de un repositorio grande, reduciendo el uso del almacenamiento local y acelerando las operaciones.

comandos:

git clone --no-checkout <repo-url>
git sparse-checkout init --cone
git sparse-checkout set <folder-path>

Beneficios:

  • Mejora el rendimiento en monorepos.
  • Reduce el uso del disco.
  • Ideal para arquitecturas de microservicios.

Ejemplo: En un proyecto empresarial de gran envergadura, es posible que los desarrolladores solo necesiten /frontend carpeta. Sparse Checkout descarga solo ese directorio, evitando gigabytes innecesarios de código de backend.


34) ¿Qué es un clon superficial y cuándo se debe utilizar?

A Clon superficial Solo descarga una parte del historial de un repositorio, lo que hace que la clonación sea mucho más rápida.

comando:

git clone --depth=1 <repo-url>

Beneficios:

  • Reduce el tiempo de clonación para repositorios grandes.
  • Ahorra ancho de banda y espacio en disco.
  • Útil para pipelines de CI que solo necesitan commits recientes.

Desventajas:

  • No se puede acceder a commits anteriores ni realizar rebases más allá de la profundidad obtenida.
  • Visibilidad histórica limitada.

Ejemplo: Los sistemas CI/CD suelen utilizar clones superficiales para obtener rápidamente la última versión del código para compilaciones automatizadas sin el historial completo de confirmaciones.


35) ¿Qué es Git LFS (Large File Storage) y por qué se utiliza?

Git LFS (Large File Storage) es una extensión que reemplaza archivos grandes (por ejemplo, imágenes, conjuntos de datos, binarios) con punteros de texto ligeros dentro de Git, mientras que almacena el contenido real en un servidor LFS remoto.

Ejemplo de comando:

git lfs install
git lfs track "*.zip"

Ventajas:

  • Mantiene el repositorio ligero.
  • Mejora el rendimiento con archivos binarios grandes.
  • Funciona a la perfección con GitHub, GitLab y Bitbucket.

Ejemplo: Los equipos de desarrollo de videojuegos utilizan Git LFS para gestionar grandes recursos 3D sin ralentizar las operaciones normales de Git.


36) ¿Cómo se puede configurar Git para obtener un rendimiento óptimo?

Puedes mejorar la velocidad y la usabilidad de Git ajustando los parámetros de configuración.

Mejores Prácticas:

  • Habilitar la compresión: git config --global core.compression 9
  • Configurar la recolección automática de basura (GC): git gc --auto
  • Utilizar la recuperación paralela (v2.31+): git config --global fetch.parallel 4
  • Habilitar el almacenamiento en caché de credenciales: git config --global credential.helper cache

Ejemplo: Para repositorios a escala empresarial, optimizar la configuración de obtención y compresión de Git reduce significativamente la latencia de clonación y extracción, mejorando la productividad en equipos distribuidos.


37) ¿Qué es la firma de commits (GPG) en Git y por qué es importante?

La firma de compromisos utiliza GPG (Protección de Privacidad GNU) para verificar criptográficamente la autenticidad de las confirmaciones, asegurando que los cambios provengan de colaboradores de confianza.

Ejemplo de configuración:

git config --global user.signingkey <GPG-key>
git commit -S -m "Signed commit"

Beneficios:

  • Previene commits no autorizados o suplantados.
  • Mejora la seguridad y la auditabilidad del repositorio.
  • Fomenta la confianza en la organización.

Ejemplo: Los proyectos de código abierto a menudo requieren confirmaciones firmadas con GPG para confirmar la autenticidad de las contribuciones de desarrolladores externos.


38) ¿Cómo maneja Git los archivos binarios de manera diferente a los archivos de texto?

Git está optimizado para código fuente basado en texto y realiza seguimientos. cambios línea por línea, lo cual no funciona bien con archivos binarios. Los archivos binarios se almacenan como bloques individuales; cualquier modificación crea una nueva versión en lugar de una diferencia.

Tipo de Archivo Eficiencia de almacenamiento Soporte diferencial Manejo recomendado
Texto Muy eficiente Git predeterminado
Binario Ineficiente No Utilice Git LFS

Ejemplo: Para repositorios con gran cantidad de imágenes, habilitar Git LFS evita la degradación del rendimiento causada por las frecuentes actualizaciones de archivos binarios.


39) ¿Cómo se solucionan problemas comunes de Git como HEAD desvinculado o errores de fusión?

Problemas comunes y soluciones:

Problema Causa Solución:
CABEZA desprendida Extraer una confirmación específica Crea una rama con git checkout -b new-branch
Conflicto de fusión Ediciones contradictorias en los archivos Resolver manualmente, entonces git add y git commit
Compromisos perdidos Reinicio o rebase accidental Use git reflog para recuperar
Rechazo de la solicitud Actualizaciones remotas anticipadas Antes de empujar, retira o rebase.

Ejemplo: Cuando se producen errores de "no avance rápido", normalmente significa que existen cambios remotos; utilice git pull --rebase Sincronizar antes de volver a intentarlo.


40) ¿Cuáles son las mejores prácticas de seguridad para los repositorios Git?

  1. Utilice la autenticación SSH o HTTPS: Evite utilizar credenciales sin cifrar.
  2. Habilita la autenticación de dos factores (2FA) en las plataformas de alojamiento de Git.
  3. Evite comprometer secretos o claves: Use .gitignore o herramientas como GitGuardian.
  4. Firma los commits con claves GPG.
  5. Restringir el control de acceso: Aplicar el principio de mínimo privilegio.
  6. Utilice reglas de protección de ramas para main or master.
  7. Realizar auditorías periódicas del repositorio.

Ejemplo: Las empresas suelen integrar el escaneo de secretos y exigir confirmaciones firmadas en las canalizaciones de CI/CD para evitar fugas de datos y cambios no autorizados.


41) ¿Cómo automatizas las operaciones de Git usando shell o Python ¿guiones?

La automatización de Git mejora la productividad y la consistencia en tareas repetitivas como commits, merges y deployments.

Ejemplo – Script de shell:

#!/bin/bash
git add .
git commit -m "Auto commit on $(date)"
git push origin main

Ejemplo Python Script (usando Git)Python):

from git import Repo
repo = Repo('.')
repo.git.add(A=True)
repo.index.commit("Automated commit")
origin = repo.remote(name='origin')
origin.push()

Beneficios:

  • Reduce el esfuerzo manual.
  • Garantiza patrones de confirmación consistentes.
  • Se integra perfectamente con los pipelines de CI/CD y DevOps.

42) ¿Qué son los Git Hooks y cómo se pueden usar en la automatización?

Ganchos Git Son scripts que se activan mediante eventos específicos de Git y se utilizan para hacer cumplir reglas o automatizar procesos.

Tipos de ganchos:

Categoría Se ejecuta en Ejemplo
Lado del cliente Máquina del desarrollador pre-commit, prepare-commit-msg
Lado del servidor repositorio remoto pre-receive, post-receive

Ejemplo: A pre-commit El hook puede ejecutar un linter o pruebas unitarias antes de permitir una confirmación.

Beneficios:

  • Mantiene la calidad del código.
  • Previene las infracciones de las normas.
  • Automatiza las tareas de validación repetitivas en los flujos de trabajo.

43) ¿Cómo migrarías un proyecto de SVN o Mercurial a Git?

Migrar desde sistemas centralizados como SVN a Git implica una conversión estructurada para conservar el historial de confirmaciones.

Pasos:

  1. Instalar herramientas de migración: git svn or svn2git.
  2. Clonar el repositorio SVN:
    git svn clone <SVN_URL> --trunk=trunk --branches=branches --tags=tags
  3. Convertir etiquetas y ramas.
  4. Enviar cambios al repositorio Git remoto (por ejemplo, GitHub).

Ventajas:

  • Permite flujos de trabajo distribuidos.
  • Aumenta el rendimiento y la flexibilidad.
  • Simplifica la ramificación y la fusión.

Ejemplo: Las organizaciones que migran desde sistemas SVN heredados utilizan svn2git Preservar la autoría y consagrar la historia.


44) ¿Cuáles son las diferencias entre Git Flow y el desarrollo basado en el tronco?

Aspecto Git Flow Desarrollo basado en troncales
Derivación Múltiples ramas (desarrollo, lanzamiento) Sucursal principal única
Modelo de lanzamiento ciclos de lanzamiento fijos Despliegue continuo
Complejidad: Moderado a alto Baja
Mejores para equipos grandes y estables Equipos ágiles y de rápido movimiento

Ejemplo: Git Flow es la mejor opción para proyectos empresariales con lanzamientos controlados, mientras que Trunk-Based es ideal para startups o microservicios donde la velocidad es fundamental.

Comparación de beneficios:

  • Flujo de Git: Control de versiones estricto.
  • Basado en el tronco: Retroalimentación más rápida y alineación CI/CD.

45) ¿Qué estrategias pueden optimizar el rendimiento de Git para repositorios muy grandes?

Para proyectos de escala empresarial con miles de commits o colaboradores, el rendimiento de Git puede degradarse si no se optimiza.

Estrategias clave de optimización:

  1. Use Clones superficiales (--depth=1) para agilizar el proceso de pago.
  2. Use Pago parcial para obtener solo los directorios relevantes.
  3. Ejecutar Recolección de basura: git gc --aggressive.
  4. Divide los monorepos en submódulos o microservicios.
  5. Comprime los objetos y empaqueta los archivos con regularidad.

Ejemplo: En monorepos de más de 10 GB, habilitar el checkout disperso y la recolección regular de basura reduce drásticamente los tiempos de clonación y obtención.


46) ¿Cómo apoya Git el desarrollo colaborativo en equipos distribuidos?

Git facilita la colaboración al distribuir copias completas del repositorio entre los desarrolladores. Cada desarrollador puede confirmar cambios localmente, enviar cambios a los repositorios remotos y fusionar el trabajo de otros.

Ejemplo de flujo de trabajo colaborativo:

  1. Haz un fork del repositorio.
  2. Crea una rama de desarrollo.
  3. Postula los cambios y abre una solicitud de extracción.
  4. Revvista y fusión en main.

Beneficios:

  • Permite el desarrollo paralelo de funcionalidades.
  • Reduce los cuellos de botella por dependencias.
  • Admite el trabajo sin conexión y flujos de trabajo flexibles.

Ejemplo: Los colaboradores de código abierto de todo el mundo colaboran de forma asíncrona mediante bifurcaciones y solicitudes de extracción alojadas en GitHub.


47) ¿Qué es la recolección de basura de Git y por qué es importante?

git gc (Recolección de basura) limpia los archivos innecesarios y optimiza el almacenamiento del repositorio mediante la compresión de objetos y la eliminación de confirmaciones inaccesibles.

comando:

git gc --aggressive --prune=now

Beneficios:

  • Libera espacio en disco.
  • Mejora el rendimiento del repositorio.
  • Reduce la redundancia en los objetos de confirmación.

Ejemplo: Los desarrolladores a menudo ejecutan git gc después de múltiples fusiones o eliminaciones de ramas para mantener la salud del repositorio, especialmente en proyectos de larga duración.


48) ¿Qué es Git Blame y cómo se utiliza para la depuración?

git blame Identifica qué commit y autor modificó por última vez cada línea de un archivo.

Ejemplo de comando:

git blame app.py

Casos de uso:

  • Seguimiento de la introducción de errores.
  • Identificar la propiedad de las secciones de código.
  • Auditar los cambios para garantizar la rendición de cuentas.

Ejemplo: Si una función comenzó a fallar después de una actualización reciente, git blame Puede identificar el commit específico y el desarrollador que realizó el cambio, lo que ayuda a depurar más rápidamente.


49) ¿Cuál es la diferencia entre bifurcar y clonar en Git?

Factor Horquilla Clon
Definición Copia de un repositorio bajo tu cuenta en un servicio de alojamiento. Copia local de un repositorio
Ubicación Lado del servidor (por ejemplo, GitHub) Máquina del desarrollador
Caso de uso Contribuir a otro proyecto Desarrollo local
Relación Conectado mediante solicitudes de extracción Sincronización directa con el control remoto

Ejemplo: Al contribuir a proyectos de código abierto, se crea una bifurcación del repositorio, se realizan cambios localmente después de clonarlo y se envía una solicitud de extracción para su revisión.


50) ¿Cuáles son los errores más comunes en Git y cómo evitarlos?

Error Descripción Prevención
Comprometer datos confidenciales Secretos o credenciales incluidos Use .gitignore o GitGuardian
Empuje forzado a ramas compartidas Sobrescribe el trabajo de otros. Use --force-with-lease
confirmaciones binarias grandes Ralentiza el rendimiento del repositorio Utilice Git LFS
Omitir revisiones de código Conduce a una mala calidad Utilizar solicitudes de extracción
Ignorando conflictos de rebase Las causas fusionan el caos Resuelva los conflictos cuidadosamente antes de presionar

Ejemplo: Un desarrollador accidentalmente subió un .env Un archivo con credenciales puede exponer información confidencial; esto se puede evitar con .gitignore reglas y ganchos de pre-compromiso.

🔍 Principales preguntas de entrevista de GIT con escenarios del mundo real y respuestas estratégicas

1) ¿Qué es Git y en qué se diferencia de otros sistemas de control de versiones?

Se espera del candidato: El entrevistador quiere evaluar tu comprensión de los fundamentos de Git y sus ventajas sobre los sistemas centralizados.

Respuesta de ejemplo: Git es un sistema de control de versiones distribuido que permite a los desarrolladores rastrear los cambios en su código y colaborar de forma eficiente. A diferencia de los sistemas centralizados como SVN, Git permite que cada desarrollador tenga una copia completa del repositorio, incluyendo su historial. Esta estructura facilita el trabajo sin conexión, agiliza las operaciones y mejora las capacidades de ramificación y fusión.


2) ¿Puedes explicar la diferencia entre git fetch, git pull y git merge?

Se espera del candidato: El entrevistador está evaluando tu conocimiento de los comandos comunes de Git y sus propósitos.

Respuesta de ejemplo: git fetch Descarga nuevos datos de un repositorio remoto pero no los integra en tu rama actual. git pull Realiza una búsqueda seguida de una fusión automática, integrando las nuevas confirmaciones. git merge Se utiliza para combinar manualmente los cambios de una rama en otra después de obtener las actualizaciones.


3) Describe una situación en la que tuviste que resolver un conflicto de fusión. ¿Cómo lo resolviste?

Se espera del candidato: El entrevistador quiere conocer sus habilidades para la resolución de conflictos y su capacidad para gestionar flujos de trabajo colaborativos.

Respuesta de ejemplo: En mi último puesto, trabajábamos con frecuencia en ramas compartidas, lo que a veces provocaba conflictos de fusión. Cuando me encontraba con uno, utilizaba git status Para identificar archivos en conflicto, revisé ambas versiones para decidir qué cambios conservar. Tras editar y probar los archivos, marqué el conflicto como resuelto y confirmé los cambios. También me comuniqué con el equipo para evitar problemas similares en el futuro, mejorando las prácticas de gestión de ramas.


4) ¿Cómo utilizas las estrategias de ramificación en Git para gestionar proyectos?

Se espera del candidato: El entrevistador quiere comprobar si comprendes flujos de trabajo estructurados como Git Flow o el desarrollo basado en el tronco.

Respuesta de ejemplo: Normalmente utilizo una estrategia de Git Flow que incluye main, developy ramas de características. Se crean ramas de características para cada nueva tarea, que luego se fusionan en develop tras su finalización, y luego se probó antes de fusionarse con mainEste método garantiza una integración controlada y ciclos de lanzamiento limpios.


5) ¿Qué pasos seguirías si accidentalmente incluyeras información confidencial en un repositorio Git?

Se espera del candidato: El entrevistador está evaluando su capacidad para responder eficazmente a un problema de seguridad o cumplimiento normativo.

Respuesta de ejemplo: Primero, eliminaría el archivo confidencial usando git rm --cached y confirmar el cambio. A continuación, usaría herramientas como git filter-branch or BFG Repo-Cleaner Para eliminar la información del historial. Finalmente, rotaría las credenciales expuestas y notificaría a las partes interesadas pertinentes para prevenir posibles riesgos.


6) ¿Cómo se garantiza la coherencia del código cuando varios desarrolladores realizan commits simultáneamente?

Se espera del candidato: El entrevistador quiere comprender cómo mantienes la integridad del código en entornos colaborativos.

Respuesta de ejemplo: En mi trabajo anterior, implementamos una política que exigía que todos los commits pasaran por pull requests y revisiones de código. Las comprobaciones automatizadas de CI garantizaban que solo se fusionara el código probado y revisado. Este enfoque mantenía la calidad y la coherencia en todas las ramas.


7) ¿Cómo revertirías un commit que ya se ha enviado a una rama compartida?

Se espera del candidato: El entrevistador quiere saber si usted entiende cómo gestionar de forma segura los errores en un repositorio compartido.

Respuesta de ejemplo: El método más seguro es usar git revert <commit_id>, que crea una nueva confirmación que deshace los cambios de la confirmación especificada. Esto mantiene el historial del proyecto y evita interrumpir a otros desarrolladores, a diferencia de git reset, lo cual reescribe la historia.


8) Cuéntame alguna ocasión en la que tuviste que gestionar varias ramas para diferentes versiones.

Se espera del candidato: El entrevistador quiere comprender su capacidad para gestionar la complejidad en el control de versiones.

Respuesta de ejemplo: En mi puesto anterior, manteníamos múltiples versiones de lanzamiento para clientes. Utilizaba ramas de lanzamiento independientes para cada versión y aplicaba correcciones críticas mediante cherry-pick. Esto garantizaba que las actualizaciones se aplicaran de forma coherente sin introducir regresiones en las versiones más recientes.


9) ¿Cómo se manejan los repositorios grandes con muchos colaboradores para mantener un rendimiento óptimo?

Se espera del candidato: El entrevistador está evaluando tu conocimiento sobre cómo escalar Git de manera efectiva.

Respuesta de ejemplo: Fomento la clonación superficial (--depth) para un acceso y uso más rápidos .gitignore Para excluir archivos innecesarios, también eliminamos ramas antiguas periódicamente y utilizamos Git LFS (Large File Storage) para los archivos binarios. Estas medidas mantienen el repositorio eficiente y fácil de gestionar.


10) Describe una situación en la que tuviste que depurar un problema de Git que interrumpió el desarrollo. ¿Cuál fue tu enfoque?

Se espera del candidato: El entrevistador quiere ver tu capacidad de pensamiento analítico y tus habilidades para la resolución de problemas.

Respuesta de ejemplo: En un puesto anterior, el historial de ramas de un miembro del equipo se corrompió debido a un rebase defectuoso. Investigué usando git log y git reflog para rastrear el problema. Luego, restauré las confirmaciones correctas usando git cherry-pick y garantizó que todas las sucursales locales estuvieran sincronizadas con la versión remota corregida. Esto evitó más interrupciones y mantuvo la productividad del equipo.

Resumir este post con: