Que es GIT, diferencias entre GIT y GitHub

Antes de comenzar, me gustaría aclarar una diferencia de conceptos.
GIT y GitHub son totalmente diferentes.

( Instala git en tu pc Mac, Windows o Linux con este tutorial )


GIT es el software que rastrea. El sistema de control de versiones. La herramienta que utilizaremos en la terminal.


GitHub es la plataforma de "hosting" de los proyectos. Una comunidad llena de personas que desarrollan y comparten, usando GIT.


Se complementan, pero son personajes independientes.




¿Qué es GIT?


Es un software rastreador. Le da seguimiento a todos los cambios que se ejecutan sobre un archivo o carpeta. Cada cambio que hagas en un directorio, GIT se da cuenta y lo registra. Así de simple.

Imaginemos un archivo que se modifica constantemente:


Index.html

Hacemos un 1° cambio: Le agregamos una etiqueta <doctype>
* git está atento y lo registra *


2° cambio: Agregamos etiquetas <head> y <body>
* git lo registra nuevamente. Tenemos 2 cambios. *


3° cambio: Agregamos contenido dentro de las etiquetas.
* git siempre lo registra. Tenemos 3 cambios. *




Cada vez que haces un cambio en tu código, GIT registra los cambios y los guarda.


¿Cómo sabe en qué momento guardar los cambios? Tú le avisas.


Es como cuando haces un “Save Game” en un videojuego. Sabes que ya ocurrieron varios cambios porque avanzaste, conseguiste nuevas armas, venciste jefes y necesitas salvar. Las veces que quieras y sean necesarias.




Ahora bien, ¿que pasaría si te dijera que el juego te permitiera ver todos tus momentos salvados del juego? Podrías ubicarte en cualquier momento que gustes de la historia.


Lo mismo ocurre con tus proyectos.


Irás avanzando, generando cambios (la forma en como “salvas” tus avances) y posteriormente, podrás revisar todo tu proyecto.


A este conjunto de cambios (que a partir de este momento les llamaremos “commits”) se le conoce como repositorio.




¿Cómo es el proceso técnico? ¿Si hago 10 cambios, GIT guarda 10 veces todos mis archivos? ¿No estaría generando miles de archivos?


Este concepto y pregunta es muy normal. GIT guarda los cambios que haces, no hace copias de los archivos.


GIT no clona 10 veces tu proyecto cada vez que salvas, sino que registra cuáles fueron las líneas que modificaste, las encapsula en el registro llamado “commit” y con esto, te permite disfrutar de un historial de avances de tu proyecto.


Al final, se podría considerar que es un registro de cambios.

Características de GIT


a) Es un sistema de control de versiones distribuido.


Con esto, nos referimos a que GIT clona los proyectos para que cada persona ó miembro de un equipo tenga una copia exacta y completa de todo el código, historial y las personas que estuvieron involucradas.


El registro encapsulado de todos los cambios de estos elementos se le conoce como repositorio, mencionado anteriormente.


Si se llegase a perder el repositorio original, no habría mucho drama porque es probable que existan personas que tienen un clón. De ahí, se puede partir sin problema.




Básicamente, cada persona (o grupo de personas) mantienen y trabajan sus propios repositorios, derivados del principal, el cual, con toda la flexibilidad, se pueden fusionar y compartir avances.


Cada repositorio es independiente. Y aunque al final buscan establecer un repositorio principal para tener orden, ellos tienen sus repositorios totalmente libres para trabajarlos. Si quieren sincronizar, muy bien, si no, no hay lío.

Repositorios independientes.



Visualicemos un ejemplo de repositorios y sus clones:



Observamos el repositorio original:

Repo Original: a, b, c, d

Cada letra (a,b,c...) se refiere a un cambio del proyecto (un estilo, una línea HTML, alguna función de JS, etc.). Vemos como hay 4 cambios: a,b,c,d.


El proyecto está hospedado en GitHub y ahí es donde se centraliza la versión principal.


Debajo, vemos que hay 2 repositorios más. Leonidas y Harvey.


Leonidas y Harvey hicieron un clon cada uno en su computadora del proyecto.


Como podemos observar, todos los repositorios tienen el commit A igual. Significa que ese conjunto de cambios todo mundo lo tiene.


Después del commit A, cada uno empezó a trabajar el proyecto de diferente manera. Leonidas se fue directo al Frontend a atacar con JS. Harvey se fue al Backend a ponerle Django y en el repositorio original (en GitHub) se observa que sigue avanzando con otros cambios generados por otro equipo de personas.


¿Qué sucede?


Cada repositorio es independiente. Esto significa que no importa si no se sincronizan, ellos pueden avanzar el proyecto a su antojo y necesidades.


Claro está, la idea de esto es colaborar.


Ellos pueden sincronizarse con el repositorio original y compartir todos los cambios y diferencias que han hecho con el proyecto. Pero la idea principal es que esto abre puertas a la colaboración y a la libertad de propuesta.


Todos los clones derivados del repositorio original contienen el mismo registro de cambios, archivos e historial en el commit A. De ahí, cada uno puede seguir sincronizando su proyecto con el original ó avanzar su propio proyecto con sus respectivos cambios.


Si llegan a aparecer más repositorios clones, también pueden colaborar entre ellos sin depender del repositorio principal.


A esto nos referimos con un sistema de control de versiones "distribuido".

b) Es Open Source.


GIT es gratuito, puedes instalarlo en cualquier ordenador o servidor.

c) Puedes utilizarlo offline

Si vas en un avión, puedes seguir trabajando en tu proyecto, en local, para posteriormente cuando te conectes a Internet, puedas subirlo al repositorio principal.

7 comentarios:

Todos los comentarios son bien recibidos...