Categorias: Todos - repositorios - archivos - colaboración - versiones

por Javier Ceballo Carrasco 2 anos atrás

121

Introducción al Control de Versiones

Un sistema de control de versiones (VCS) es esencial para gestionar diferentes tipos de archivos, no solo código, como configuraciones, documentación, y multimedia. Estos sistemas permiten editar múltiples archivos y registrar estos cambios como una sola operación, identificar las modificaciones, cuándo y por quién fueron realizadas, y revertir a versiones anteriores.

Introducción al Control de Versiones

Introducción al Control de Versiones

Usando Git

Mensajes de confirmación

git config -l

Permite ver nuestra configuración básica de Git.

git log

A su salida muestra una información estructurada

Mensaje de confirmación

Date

Author

ID del commit

Muestra el mensaje de confirmación de todos los commits que hayamos hecho.

Estructura

Uno o más párrafos

Ofrecen información más detallada sobre los cambios que se están comprometiendo.

Línea vacía

Que sirve de separación entre la línea anterior y los párrafos siguientes.

Primera línea

De alrededor de 50 caracteres que resumen el cambio que se está comprometiendo.

¿Qué es un mensaje de confirmación?

Los escribimos al hacer una confirmación o "commit"

Son mensajes que describen los cambios de los archivos que estamos comprometiendo.

Rastreando archivos
Cómo se rastrean un archivo

Comprometerlo

Usando el comando "git commit" se almacenarán los cambios en el VCS.

Puesta en escena

Mediante el comando "git add" lo colocamos en la Staging area .

Se coloca en esta área como una forma de marcarlos para que se les haga seguimiento.

Modificar el archivo

Sucede cuando lo cambiamos de alguna manera.

Estados de archivos rastreados

Comprometido (Commited)

Los cambios se almacenan en el directorio de Git.

Los cambios se almacenan de forma segura en el directorio de Git como una fotografía instantánea de nuestro proyecto en un tiempo determinado.

Escenificado (Staged)

Están listos para ser comprometidos.

Podemos pasar archivos a esta área de Git mediante el comando "git add" pasando como argumento el archivo modificado que vamos a comprometer.

Modificado (Modified)

Se le han realizado cambios que aun no se han comprometido.

Los cambios realizados al archivo podrían ser los siguientes: agregar, modificar o eliminar contenido de un archivo.


Git nota los cambios, pero no los guarda hasta que se añadan al área de ensayo (Stage).


Podemos conocer el estado de nuestros archivos rastreados por Git con el comando "git status" estando ubicados en el directorio del proyecto.

Archivos rastreados por Git

Son archivos, cuyo historial de cambios se encuentra en el repositorio Git.

Primeros pasos con Git
Diferentes áreas en Git

Área de puesta en escena (Staging area)

También conocida como "índice", es un archivo mantenido por Git que contiene toda la información acerca de qué archivos y cambios van a entrar en la siguiente confirmación o "commit".

comandos

git commit

Permite comprometer los archivos que están en el área de puesta en escena en el directorio.

Cuando aplicamos este comando, le decimos a Git que queremos guardar nuestros cambios. Luego se abre un editor de texto donde podemos introducir un mensaje de confirmación.

git status

Por ejemplo:


>> git status (se aplica en el directorio que contiene el proyecto con el que estamos trabajando)


Nota: existen tres estados diferentes para los archivos que son rastreados por Git, a saber: Modified (modificado); Staged (escenificado) y Commited (comprometido).

Permite obtener información sobre el árbol de trabajo actual y sobre los cambios pendientes.

Árbol de Trabajo (Working Tree)

Es el área afuera del directorio Git. En ella se encuentra la versión actual de nuestro proyecto. Es comparable a un banco de trabajo en donde realizamos todas las modificaciones a nuestros archivos.

Comnados

git add

Con este comando se le indica a git que rastree un archivo que se encuentra en el árbol de trabajo. Con esto el archivo pasará a ubicarse en el área de puesta en escena, listo para una confirmación o "commit".

Por ejemplo:


>> git add "file1.py"


Al aplicar este comando, el archivo en cuestión comienza a ser rastreado por Git.

Repositorio Git

Es como una base de datos en donde se almacena el historial de cambios de nuestro código.

Creación de un repositorio

Comandos útiles

ls -l

Para ver qué contiene el repositorio .git

Por ejemplo:


>>checks ls -l .git

ls -la

Enumera los directorios que comienzan con un punto (.). Con ello se comprueba la existencia del repositorio .git

>> checks ls -la

Este comando muestra todos los archivos y directorios, dentro del directorio actual (la bandera -la incluye los repositorios ocultos).

Para crear un repositorio Git desde cero usamos el comando "git init". Mientras que para hacer una copia de un repositorio existente usamos el comando "git clone".pic

Por ejemplo:


>> mkdir checks (Crea un nuevo repositorio de nombre checks).


>> cd checks (Ubica en el repositorio recién creado).


>> git init (Crea un repositorio Git vacío dentro del directorio recién creado).


Un mensaje de confirmación es mostrado en la terminal luego de crear el repositorio:


Initialized empty Git repository in /home/user/checks/.git

Un repositorio Git es como una base de datos que almacena los cambios y el historial de cambios de un proyecto.

Configuración básica de Git

Se realiza mediante el comando "git config" y sus distintas banderas, estableciendo valores para user.name y user.email.

Por ejemplo:


>> git config --global user.email "jvrceballo@gmail.com"

>> git config --global user.name "Javier Ceballo"


Nota: La bandera global indica que la configuración es válida para todos los repositorios Git. También podríamos usar configuraciones diferentes para diferentes repositorios.

Este paso nos permite decirle a Git quienes somos para que pueda rastrear quien hizo un cambio.

Sistemas de control de versiones

Instalando Git
McOS

Usando el comando "git --version"

Windows

La instalación viene con el entorno MinGW64, el cual permite operar con los mismo comandos y herramientas de Linux.

Primero se debe descargar y ejecutar el instalador y luego pasar por una serie de pasos de configuración.

Linux

Mediante los instaladores de paquetes apt o yum.

¿Qué es Git?
VCS y SCM

Un acrónimo similar a VCS (Version Control System) es el de SCM (Source Control Management), el cual especifica sistema de control de versiones especialiados en código.

Características

Utiliza HTTP, SSH o su mismo protocolo para la comunicación cliente- servidor.

Permite la colaboración mediante repositorios remotos.

Puede operar como servidor y como cliente.

Como servidor: en una máquina donde se aloja una copia de un repositorio.


Como cliente: para acceder a un repositorio desde otra máquina o incluso la misma.

Permite hacer operaciones sobre los archivos de forma rápida.

Esta característica se debe a que es un VCS distribuido.

Es el VCS más popular, siendo usado en millones de proyectos.

Tiene arquitectura distribuida.

Esto significa que cada persona que contribuye a un repositorio tiene una copia completa del mismo en su propia máquina.

Creado originalmente para ayudar a administrar el desarrollo del kernel de Linux.

Es libre, de código abierto y multiplataforma.

Multiplataforma porque puede operar en diferentes sistemas operativos como Windows, Linux y MacOS).

Es un sistema de control de versiones (VCS) creado en 2005 por Linus Torvalds, el desarrollador que inició el kernel de Linux.
Control de versiones y automatización
Los VCS son útiles incluso en equipos de de una sola persona

Permiten ver el historial de cambios y comprender qué cambió y por qué.

Comandos "diff" y "patch" en VCS
Los comandos "diff" y "patch" son usados mediante los VCS.
Archivos que gestiona un VCS
Además de código, pueden gestionar: archivos de configuración, documentación, archivos de datos, imágenes, videos, etc.
Permiten lo siguiente
Que el autor del "commit" haga comentarios explicativos sobre los cambios.
Editar múltiples archivos y tratar esta edición como un único cambio (commit).
Conocer qué archivo o directorio fue cambiado.
Revertir cambios y volver a versiones anteriores de un archivo o directorio
Saber cuándo se hicieron los cambios a un archivo y quién los hizo
¿Qué es un sistema de control de versiones?
Herramienta que mantiene un historial de los cambios que hemos realizado a un archivo o conjunto de archivos.

Antes del control de versiones

Herramientas para diferenciar y aplicar cambios
Aplicar cambios

Comando "cat"

Permite ver el contenido de un archivo.

Comando "patch"

Los cambios en el archivo ".diff" pueden ser aplicados al archivo original con el comando "patch".

Diferenciar archivos

Comando "diff"

Ejemplo de uso del comando:


>> diff file.py file1.py


Con el indicador -u:


>> diff-u file.py file1.py (lo que le dará contexto a las diferencias encontradas por diff)

Es posible guardar los cambios obtenidos con "diff" en un archivo de extensión ".diff"

Al archivo ".diff" también se le conoce como archivo de parche (patch file). Contiene las diferencias entre el archivo viejo y el archivo nuevo, junto con el contexto de los cambios, para aplicarlo al archivo original.

Herramientas gráficas similares: meld, kdiff y vimdiff.

"wdiff" sólo muestra las palabras que han cambiado en un archivo.

Con "diff -u" podemos ver el contexto de los cambios

Utiliza varios formatos para resaltar los cambios

Resalta las diferencias entre dos archivos o directorios

Conservación de copias históricas
Copias históricas

Permiten ver cómo era un proyecto antes y regresar a esa versión si es necesario.

Se crea al guardar copias de un proyecto a medida que lo modificamos.

Son la forma más primitiva del control de versiones

Es un proceso manual y no muy detallado.

Esto es porque primero hay que recordar que se debe guardar una copia de los archivos; segundo, por lo general se hace una copia de todo el archivo, aunque sólo se haya cambiado una pequeña parte del mismo; y tercero, porque aunque se le envíe una copia de los archivos por correo al resto del equipo aún sigue siendo difícil identificar quién realizó el cambio y por qué lo hizo.

Control de versiones

¿Qué es el control de versiones?
Es la gestión de los diversos cambios que se realizan sobre los elementos de algún producto.

En este tema, la gestión consiste, básicamente, en guardar los diferentes cambios en los archivos.

Objetivos de aprendizaje

Utilizar Git creando y clonando repositorios, agregando código, verificando el estado del código y comprometiéndolo.
Instalar Git en su máquina.
Comprender qué es Git y cuáles son sus beneficios.
Utilizar los comandos "diff" y "patch" para automatizar la diferenciación y edición de archivos.
Comprender el concepto de control de versiones y sus beneficios.