¡Esta es una revisión vieja del documento!
Según la definición de Wikipedia
“Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Una versión, revisión o edición de un producto, es el estado en el que se encuentra el mismo en un momento dado de su desarrollo o modificación.”
Esta es una definición genérica de lo que significa el control de versiones. En nuestro caso, los productos que vamos a manejar son archivos digitales como por ejemplo:
GIT es un sistema de versiones distribuido (descentralizado). Fue diseñado para correr de forma local en casi todas sus funcionalidades. No dependemos de un respositorio central y, por lo tanto, de acceso a internet para poder trabajar con nuestros dearrollos.
Veamos algunos conceptos y definiciones asociados al control de versiones con GIT:
Un repositorio canónico o bendecido es el respositorio que tiene la aprobación de los gerentes del proyecto como el estándard “de facto” desde donde se debe clonar su contenido para realizar las modificaciones.
El “branching” permite a los desarrolladores “clonar” un respositorio de trabajo e tal forma de poder jugar con su contenido sin temer a que se produzcan cambios dañinos para el desarrollo. El “branching” crea una copia del código tal cual está en ese momento en una rama (branch) separada para poder trabajr de forma segura. Siempre vamos a poder reconstruir el código original.
GIT maneja los envíos al repositorio (a esta operación se la denomina “commit”) usando un área intermedia llamada “staging area” o “index”. Esta forma de trabajo permite enviar un archivo a “staging”, seguir trabajando sobre el mismo archivo con una versión en “staging” que consideramos buena previo al envío al respositorio como versión definitiva de esa instancia del desarrollo. La “staging area” es un área de trabajo extra para poder guardar copias intermedias antes de decidir qué mando al repositorio. Me da la oportunidad de mantener un repositorio limpio de commits con mínimas modificaciones.
Tan importante como la herramienta de versionadp es el “workflow” (flujo de trabajo) que se diseñe para manejar los desarrollos. El “workflow” es independiente de la herramienta. Es el diseño de la forma de trabajo del grupo de desarrollo. GIT tiene la virtud de adaptarse a prácticamente cualquier tipo de “workflow”.
Vamos a ver 3 tipos de “workflow” habituales en desarrollo: