El objetivo principal es registrar los cambios en un archivo a lo largo del
tiempo, para poder evitar pérdidas de información parcial o en su
totalidad con los cambios que se van generando en los archivos, a su vez,
lleva las copas de seguridad.
El nacimiento de Git en 2005 producto de un
conflicto entre la comunidad desarrolladora
de Kernel de Linux y Bitkeeper
Git nace con los siguientes objetivos:
* Velocidad * Diseño sencillo *
Soporte para desarrollo no lineal *
Completamente distribuido * Capaz
de manejar grandes proyectos
eficientemente
Git trabaja de manera que almacena copias instantáneas de como va el
archivo en cada momento que se guarda, colocando a cada instantánea
referencias. La mayoría de operaciones se hacen localmente, en la base de
datos del ordenador con el que se sincronizó todo, por ende, no es necesaria
la conexión a internet más que para actualizar el versonamiento.
Git es incorruptible gracias al
checksum y los valores hash con
lo que guarda hasta el más
mínimo cambio para evitar
perder información, por eso
también es fácil experimentar
con el código y ver nuevas
alternativas, aunque hayan
cambios significativos todo ha
sido registrado.
Git posee tres estados
Commited: Ya existe esa versión de archivo en el
directorio de git
Staged: Luego que se bajó una versión y esta sufrió algún
cambió pero se ha avisado en el área de preparación
Modified: Se bajó una versión que sufrió cambios pero no
se ha mandado al área de preparación
Tipos de control de versiones
Locales
Su origen proviene de un sobrellevado de versiones ineficientes que se resumen en
copiar los archivos trabajados en nuevos directorios, siendo más propenso a errores
como como borrar archivos por error o sobrescribir los incorrectos; por ende bajo
estas circunstancias los locales hacen uso de una base de datos guardando los
cambios de los archivos en formatos especiales, a su vez, es capaz de recrear como
era un archivo en cualquier momento.
Deficiencias:
* No se puede colaborar entre desarrolladores en
otros sistemas. * Si el disco duro se corrompe y
no hay copias de seguridad todo se habrá
perdido.
Centralizados
Se caracterizan por tener un servidor (centralizado) al que varios
clientes se conectan para bajar los archivos versionados, los
administradores poseen una mejor idea sobre en qué trabaja cada
desarrollador y es más eficiente que trabajar con la base de datos.
Deficiencias:
* Al tener un servidor centralizado, si este se cae durante
equis tiempo, nadie podrá trabajar durante ese tiempo. * Si
el disco duro se corrompe y no hay copias de seguridad todo
se habrá perdido (con excepción de las locales que tenga
cada desarrollador).
Distribuidos
Su característica novedosa es que al hacer la copia de versiones se hace una réplica de todo el
repositorio, así si el servidor se cae, se puede mandar la copia de un administrador al servidor para
recuperarlo todo; hay un flujo de trabajo mucho más eficiente y simultáneo entre desarrolladores