TAI
Tema

Git para Oposiciones TAI: Guía Completa

📝 0 preguntas 📖 Teoría 🎯 Preparación TAI

💡 Qué aprenderás

En este tema estudiarás todos los conceptos necesarios para responder correctamente las preguntas relacionadas con Git en la oposición.

¿Qué es Git?

Git es un sistema de control de versiones distribuido (DVCS - Distributed Version Control System) que permite registrar, gestionar y controlar los cambios realizados sobre archivos a lo largo del tiempo.

Fue creado por Linus Torvalds en 2005 para el desarrollo del núcleo Linux y actualmente es el sistema de control de versiones más utilizado en el desarrollo de software.

Su principal objetivo es facilitar el trabajo colaborativo, mantener un historial completo de cambios y permitir recuperar versiones anteriores de un proyecto.

📖 Definición
Git almacena el historial completo del proyecto en cada repositorio local, permitiendo trabajar incluso sin conexión.

Conceptos fundamentales

Para comprender Git es imprescindible conocer los siguientes conceptos:

  • Repositorio (Repository): proyecto gestionado por Git.
  • Commit: instantánea del estado del proyecto.
  • Branch (Rama): línea independiente de desarrollo.
  • Merge: unión de cambios entre ramas.
  • Remote: repositorio alojado en un servidor remoto.
  • HEAD: referencia al commit actual.
🎯 Muy preguntado
Git es un sistema distribuido, por lo que cada desarrollador dispone de una copia completa del repositorio.

Funcionamiento de Git

El flujo de trabajo habitual sigue estas etapas:

Archivos

↓

Working Directory

↓

git add

↓

Staging Area

↓

git commit

↓

Repositorio Local

↓

git push

↓

Repositorio Remoto

Cada modificación queda registrada mediante commits, que permiten reconstruir cualquier estado anterior del proyecto.

💡 Consejo para el examen
Git no guarda únicamente los archivos, sino la evolución completa del proyecto mediante un historial de cambios.

Características de Git

Git presenta las siguientes características:

  • Sistema distribuido.
  • Alto rendimiento.
  • Historial completo de cambios.
  • Trabajo mediante ramas.
  • Integridad de los datos mediante hashes.
  • Soporte para trabajo colaborativo.
🎯 Muy preguntado
Cada commit queda identificado de forma única mediante un hash SHA-1 (40 caracteres hexadecimales).

Repositorios

Un repositorio es el lugar donde Git almacena el historial y el contenido del proyecto.

Existen dos tipos principales:

Repositorio local

Se encuentra en el equipo del desarrollador.

Permite:

  • Crear commits.
  • Crear ramas.
  • Consultar el historial.
  • Trabajar sin conexión.

Repositorio remoto

Se aloja en un servidor compartido.

Permite:

  • Compartir el proyecto.
  • Sincronizar cambios.
  • Colaborar con otros desarrolladores.
📌 Recuerda
Git funciona perfectamente sin repositorio remoto; este solo es necesario para compartir el trabajo.

Estados de los archivos

Un archivo puede encontrarse en distintos estados durante el ciclo de trabajo.

Estado Descripción
Untracked Git aún no controla el archivo.
Modified El archivo ha sido modificado.
Staged El cambio está preparado para el siguiente commit.
Committed El cambio ya forma parte del historial del repositorio.
💡 Consejo para el examen
El comando git status permite conocer el estado actual de todos los archivos.

Commits

Un commit representa una instantánea del proyecto en un momento determinado.

Cada commit contiene:

  • Identificador único (hash).
  • Autor.
  • Fecha.
  • Mensaje descriptivo.
  • Referencia al commit anterior.
🎯 Muy preguntado
Un commit no guarda únicamente los archivos modificados, sino una instantánea lógica del proyecto.

Ramas (Branches)

Las ramas permiten desarrollar funcionalidades de forma independiente sin afectar a la rama principal.

Las operaciones más habituales son:

  • Crear una rama.
  • Cambiar de rama.
  • Fusionar ramas.
  • Eliminar ramas.
main

│

├───────────┐

│           │

feature     │

│           │

└────merge──┘

↓

main
🎯 Muy preguntado
Trabajar mediante ramas evita interferencias entre desarrolladores y facilita el desarrollo paralelo.

Merge

El merge consiste en integrar los cambios de una rama dentro de otra.

Existen dos situaciones:

  • Merge automático: Git combina los cambios sin problemas.
  • Conflicto de merge: varios usuarios modifican la misma parte del archivo y Git requiere intervención manual.
⚠️ Error habitual
Los conflictos aparecen cuando Git no puede decidir automáticamente qué cambios conservar.

Comandos principales

Los comandos más utilizados son:

Comando Función
git init Inicializa un repositorio.
git clone Copia un repositorio existente.
git status Muestra el estado del proyecto.
git add Añade cambios al área de preparación.
git commit Guarda una instantánea del proyecto.
git log Muestra el historial de commits.
git branch Gestiona ramas.
git checkout Cambia de rama o recupera versiones.
git merge Fusiona ramas.
git pull Descarga e integra cambios remotos.
git push Envía commits al repositorio remoto.
💡 Consejo para el examen
Los comandos git add, git commit, git pull y git push son los más habituales en el trabajo diario.

Flujo de trabajo básico

El desarrollo típico sigue esta secuencia:

  1. Modificar archivos.
  2. Ejecutar git status.
  3. Añadir cambios con git add.
  4. Crear un commit mediante git commit.
  5. Descargar cambios remotos con git pull.
  6. Enviar los commits mediante git push.
📌 Recuerda
Antes de realizar un git push es recomendable ejecutar git pull para reducir la probabilidad de conflictos.

Comparación Git vs Sistemas centralizados

Git Sistema centralizado
Distribuido Centralizado
Historial completo en cada equipo Historial en el servidor
Puede trabajar sin conexión Requiere conexión frecuente
Alta tolerancia a fallos Dependencia del servidor central
Ramas muy rápidas Ramas más costosas

Caso práctico

Situación

Dos desarrolladores trabajan sobre la misma aplicación.

  • El desarrollador A crea una nueva funcionalidad.
  • El desarrollador B corrige un error.

Cada uno trabaja en una rama distinta.

Cuando finalizan:

  1. Ambos realizan sus commits.
  2. Envían los cambios al repositorio remoto.
  3. Se fusionan las ramas mediante merge.

Si ambos modificaron la misma línea del mismo archivo, Git solicitará resolver un conflicto antes de completar la integración.

💡 Consejo para el examen
El uso de ramas reduce considerablemente los conflictos durante el desarrollo colaborativo.

Ventajas e inconvenientes

Ventajas

  • Historial completo de cambios.
  • Trabajo distribuido.
  • Desarrollo paralelo mediante ramas.
  • Recuperación sencilla de versiones anteriores.
  • Alto rendimiento.
  • Excelente soporte para trabajo colaborativo.

Inconvenientes

  • Curva de aprendizaje inicial.
  • Conflictos durante la fusión de ramas.
  • Gran cantidad de comandos disponibles.
  • No resulta adecuado para archivos binarios de gran tamaño.

Errores habituales

⚠️ Error habitual
Los errores más frecuentes al estudiar Git son:
  • Confundir Git con GitHub.
  • Pensar que Git necesita conexión a Internet para funcionar.
  • Olvidar realizar git add antes del commit.
  • Confundir git fetch, git pull y git push.
  • Trabajar directamente sobre la rama principal.
  • No escribir mensajes descriptivos en los commits.

Cómo evitarlos

  • Diferenciar Git del servicio de alojamiento de repositorios.
  • Comprender el flujo Working Directory → Staging → Commit.
  • Utilizar ramas para nuevas funcionalidades.
  • Realizar commits pequeños y frecuentes.
  • Sincronizar periódicamente con el repositorio remoto.

Relaciones con otros temas

Git está estrechamente relacionado con:

  • Desarrollo de software.
  • Integración continua (CI).
  • Despliegue continuo (CD).
  • DevOps.
  • GitHub.
  • GitLab.
  • Control de versiones.
  • Trabajo colaborativo.
  • Gestión de proyectos software.
📌 Recuerda
En exámenes es muy frecuente relacionar Git con repositorios, commits, ramas (branches), merge, repositorios remotos y control de versiones.

Conceptos clave para recordar

[!NOTE]

  • Git es un sistema de control de versiones distribuido (DVCS).
  • Cada desarrollador dispone de una copia completa del repositorio.
  • El flujo habitual es: Working Directory → Staging Area → Commit → Repositorio remoto.
  • Un commit representa una instantánea del proyecto.
  • Las ramas (branches) permiten desarrollar funcionalidades de forma independiente.
  • El merge integra los cambios de distintas ramas y puede generar conflictos.
  • git add prepara cambios, git commit los registra, git pull sincroniza cambios remotos y git push publica los commits.
  • Git puede utilizarse completamente sin conexión; la conexión solo es necesaria para interactuar con repositorios remotos.
  • Git es el estándar de facto para el control de versiones en el desarrollo de software moderno.

📝 Preguntas de ejemplo

Comprueba si reconoces este tipo de preguntas.

¿Has terminado de estudiar?

Ahora pon a prueba tus conocimientos realizando el test completo de este tema.

Comenzar test

Utilizamos cookies

Utilizamos cookies analíticas para conocer el uso de la plataforma y mejorar la experiencia del usuario. Puedes aceptar o rechazarlas en cualquier momento. Más información en nuestra Política de Cookies .