
1. ¿Qué son los sistemas de control de versiones?
Los sistemas de control de versiones, son sistemas que va a guardando todos los cambios de un archivo o un conjunto de archivos a través del tiempo, así puedes leer tu código de versiones anteriores en versiones futuras del desarrollo, solemos usarlo con filas de codigo fuente de programas, pero en realidad esto se puede hacer con cualquier tipo de archivo.
Si tu eres escritor tambien deberias usar git, sobre todo si usas lenguajes como LaTex, de esa forma llevas una especie de agenda que recuerda todos los cambios que has hecho durante la escritura de tus documentos. Igualmente si eres un diseñador gráfico, puedes llevar un control de versiones de tus bosquejos que has hecho por si se corrompe un archivo tener el respaldo de tus antiguas versiones y poder recuperarlas, yo por ejemplo, llevo controladas todas las versiones de mis post en un repositorio git.
Implementar sistemas de control de versiones (VCS) es una decisión muy sabia, porque te permite revertir tus archivos a una versión anterior fácilmente o un proyecto completo, y también puedes comparar dos archivos con distintas versiones, o identificar un problema en tu código comparando las líneas de código entre la versión actual y la anterior, lo que significa que si estás usando un sistema de control de versiones y borras tus archivos o algo sale mal fácilmente puedes recuperarlos overhead.Implementar sistemas de control de versiones (VCS) es una decisión muy sabia, porque te permite revertir tus archivos a una versión anterior fácilmente o un proyecto completo, y también puedes comparar dos archivos con distintas versiones, o identificar un problema en tu código comparando las líneas de código entre la versión actual y la anterior, lo que significa que si estás usando un sistema de control de versiones y borras tus archivos o algo sale mal fácilmente puedes recuperarlos , es decir todo lo que consigues al leer este post son beneficios.
Mucha gente escoge un método rudimentario de control de versiones, que es ir copiando sus archivos en otra carpeta, con el fin de tener un backup en caso de que se le pierdan sus archivos, pero tienes muchos inconvenientes o escenarios posibles que pueden afectar a tu backup, como borrar accidentalmente la carpeta, o olvidar el nombre del directorio donde dejaste tus archivos, y si llevas un backup en la nube puedes olvidar la contraseña de tu cuenta entre muchas otras cosas.
Los programadores del pasado, desarrollaron una especie de base de datos para llevar todos los cambios que realizaban a un archivo.

Pero el problema mayor que se vio fue el cómo colaborar con un equipo de programadores. Para esto se desarrolló un sistema en donde un servidor central tenía todos los cambios que el equipo completo iba efectuando a los archivos, y este fue el estándar por mucho tiempo

De esta forma se solucionan muchos problemas, ya que el equipo tenía control sobre los cambios que se iban realizado a cada archivo, y se podían y el administrador podía seguir muy de cerca los cambios que se iban haciendo al software durante las etapas del desarrollo y se podía tener una base de datos para cada cliente.
Aun así este sistema tienes muchas desventajas y potenciales fallas que se pueden presentar, porque tienes un servidor local de tu empresa y ese puede fallar y perder todos los datos del desarrollo.
2. ¿Que es git?
Git es un sistema de control de versiones, que es muy fácil y flexible cualquier persona puede usar git de manera fácil, y configurarlo de manera rápida en su pc, es bastante parecida al último sistema de control de versiones que discutimos, pero tiene un cambio muy grande en la manera en que va controlando los cambios de los archivos.La diferencia más grande entre git y otros sistemas de VCS es la manera en que Git administra los cambios de tus archivos, otros sistemas es solo un cúmulo de cambios entre archivos, y de esa manera poder reconstruir los archivos algo como esto.


Git considera todos los aspectos del control de versiones que heredó de las versiones anteriores de las VCS, lo que lo hace una herramienta muy poderosa para llevar el control de tus archivos durante el desarrollo de un proyecto.
Git no necesita conectarse a internet para determinar los cambios de tus archivos, todo lo hace de forma local, por lo que los cambios se reconocen de forma casi automática, no necesita consultar el historial de cambios porque tienes todos los cambios de manera local en tu computador, lo que significa que puedes trabajar en cualquier lado sin necesidad de conectarte a internet y luego subirlos a un servicio en línea compatible con git una vez llegas a tu hogar o a un lugar donde tengas una conexión de internet.
Git tiene integridad. Esto significa que hace una suma de chequeo para cada uno de los archivos (checksum), lo que significa es que git sabe instantáneamente cuando hiciste una modificación en tus archivos, y también es imposible modificar los contenidos de los archivos sin que git se entere, el método que usa git para hacer las sumas de chequeo es el algoritmo SHA-1. Git guarda los archivos no por el nombre si no por la suma de chequeos de tus archivos

Git generalmente solo añade información. Git para llevar un historial de cambios solo añade información a el no borra información sobre los cambios aunque elimines líneas de código, eso te da seguridad de siempre tener disponibles las versiones anteriores aunque hayas eliminado lineas de codigo de tus archivos.
En git tienes tres estados por lo que pasan tus archivos, y presta atención a esto porque estos tres pasos son los más fundamentales para proseguir con el proceso de aprendizaje sin problema.
- Modified (Modificado): Esto significa que has modificado tu archivo pero aun no has confirmado los cambios que les hiciste.
- Staged (Preparado): Significa que has marcado los cambios en tu archivo actual para proseguir a la próxima confirmación.
- Commited (confirmado): Esto significa que tus datos están almacenados de forma segura en tu base de datos local.

El repositorio git es la parte esencial de git y es lo que se copia a tu computador cuando clonas, ahí se almacenan todos los metadatos de tu aplicación. El repositorio es la copia de cierta versión de tu proyecto, estos archivos se sacan de la base de datos comprimida dentro de tu repositorio y se colocan en el disco para que puedas modificarlos.
El flujo de trabajo con git es el siguiente:
- Modificas una serie de archivos en tu directorio de trabajo.
- Preparar los archivos poniéndolos en el area de preparacion.
- Confirmar los cambios y almacenar esas fotografías comprimidas de tus archivos en el directorio git.
3. Instalando Git
Instalación en LinuxSi estás usando una distribución basada en debian: Ubuntu, Mint, etc. Debes escribir esta linea en tu consola:
$ apt-get install git
$ yum install git-core
Si estás usando una versión de linux que instale RPM: RHEL o CENTOs puedes instalarlo con DNF
$ sudo dnf install git-all
Instalación en Mac
Para instalar Ubuntu en OS x puedes usar el instalador de OSx, que puedes conseguir aquí.
De igual manera si estás usando Homebrew puedes instalarlo con el siguiente comando
$ brew install git
Instalación en Windows
Puedes instalar Git en windows usando el instalador oficial que puedes conseguir aqui
Igualmente te instalará una consola de Git, que es la que te recomiendo usar para hacer todas las operaciones de Git que veremos a continuación, puedes encontrarla apretando inicio y escribiendo Git Bash
4. Configurando Git Por Primera Vez
Git necesita tener tu identidad, porque esa identidad la pone en los repositorios para que puedan enviarte emails fácilmente si tienen consultas al clonar tu repositorio, por lo que debes configurarla.Para eso vamos a abrir la consola o en el caso de windows la Git Bash y vamos a escribir lo siguiente
$ git config --global user.name "Jaime Crispi"
$ git config --global user.email ejemplo@example.com
Usamos la opción --global para que git use siempre esa identidad para todo lo que hagas con el sistema git, y no estar escribiendo tu identidad cada vez que hagas un repositorio.
Puedes configurar tu editor de texto para que git reconozca cuando tengas que confirmar un mensaje, si no pones nada se usará el editor por defecto en tu sistema
$ git config --global core.editor vscode
Para comprobar que tu configuración es correcta vamos a escribir lo siguiente.
$ git config --list
Y para consultar por un valor individualmente debemos llamarlo de esta manera
$ git config user.name
Out:
Jaime Crispi
Para obtener ayuda debes usar el comando git help, por ejemplo para obtener ayuda sobre el comando config$ git help config
5. Creando nuestro primer repositorio
Para crear tu primer repositorio, debes situarte en la carpeta central donde tienes un proyecto, yo tengo una carpeta de ejemplos de C++ donde donde creare un nuevo repositorio, para inicializar un repositorio git, debemos escribir la siguiente línea en nuestra consola situándonos en la carpeta que queramos agregar.$ git init
Out:
Initialized empty Git repository in /home/harpie/Escritorio/C++/.git/
Esto crea una sub carpeta oculta llamada .git que tiene un esqueleto de todos nuestras carpetas pero sin ni una información, ahora si deseas empezar a controlar las versiones de esa carpeta, puedes llevar los archivos al area de preparacion.$ git add *.cpp
Con este comando llevó todos los archivos con extensión cpp al área de preparación, ahora si quiero ver el estado de mis archivos puedo hacer lo siguiente
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: aritmetica.cpp
new file: condif.cpp
new file: datos.cpp
new file: entrada.cpp
Ahora si quiero confirmar los cambios debo escribir lo siguiente
$ git commit -m "confirmacion inicial"
Out:
[master (root-commit) 524d279] confirmacion inicial
19 files changed, 302 insertions(+)
create mode 100644 aritmetica.cpp
create mode 100644 condif.cpp
create mode 100644 datos.cpp
create mode 100644 entrada.cpp
Ahora vamos a explicar como configurar GitHub para subir nuestro repositorio.
Para configurar GitHub con nuestro computador, debemos generar las claves ssh, para ello tenemos que escribir el siguiente comando en la consola.
$ ssh-keygen -t rsa -b 4096 -C "tuemail@ejemplo.com"
Esto va a generar un par de claves una pública y una privada, para que github no bloquee mi conexión con mi cuenta. Nos pedirá una contraseña para la clave privada, pon la que quieras. Esto se puede volver a repetir en el futuro$ eval "$(ssh-agent -s)"
Ahora vamos a iniciar el cliente SSH con ese comando, y luego registrar las claves ssh, para que nuestro cliente SSH trabaje con ellas
$ ssh-add ~/.ssh/id_rsa
Ahora vamos a agregar nuestra clave SSH a github, para ello escribiremos lo siguiente en la consola de linux, o la git bash en windows$ cat ~/.ssh/id_rsa.pub
Y copiaremos lo que salga en la consola y nos dirigiremos a github y nos crearemos una cuenta o entraremos a ella. Vamos a dirigirnos a settings. Haciendo click sobre nuestra imagen de perfil
Luego iremos al siguiente apartado


Y le pondremos un título y copiaremos nuestra clave ssh en el Área de texto más grande y presionaremos add SSH Key.
Ahora vamos a subir nuestro repositorio a github, para ello vamos a ir al boton "+" .
Le pondremos un nombre y una descripción acorde a nuestro proyecto
Y presionaremos, Create Repository
Si vamos a subir un repositorio existente en nuestro computador no vamos a ponerle ni un gitignore y ni una licencia ya que eso generará conflictos con nuestro repositorio local.

$ git remote add origin git@github.com:usuario/nombre_del_repositorio.git
$ git push -u origin master
Por último refrescamos la página y nuestros archivos ya estan en github

6. Conclusión y Agradecimientos
Github es una herramienta necesaria para cualquier persona que trabaje con su computador ya seas un escritor, músico, etc. Todos necesitamos llevar un control de versiones de todo nuestro trabajo con el fin de protegerlo, y git es una herramienta bastante poderosa, y queda bastante mas por aprender por lo que te recomiendo no comprar cursos de git, sino leer el libro gratis de la comunidad de git que cubre todo el funcionamiento con muchos detalles y te puedes hacer un experto en gitEl libro esta en Español, asi que no hay excusas para no aprender git.
Te agradezco por leer este articulo, creo que es un tema importante para todos y el siguiente articulo será de Pandas para reanudar el trabajo, pero necesitaba distraerme del tema del machine learning por un articulo, nos vemos en el próximo articulo :D
Comentarios
Publicar un comentario