Describimos una breve introducción a Git. Git es un sistema de control de versiones diseñado para realizar un seguimiento de los cambios en un código fuente a lo largo del tiempo. Git entra en el juego cuando varios desarrolladores trabajan en un mismo proyecto sin un sistema de control de versiones, se convierte en un caos total. Resolver los eventuales conflictos se vuelve imposible ya que nadie ha realizado un seguimiento de sus cambios y se vuelve muy difícil fusionarlos en una sola verdad central. Git y los servicios integrados (por ejemplo, Github) ofrecen la solución parar estrucutrar las modificaciones del proyecto.
En principio, hay un repositorio central único (llamado «origen») que los usuarios individuales clonarán en su máquina local (llamado «local» o «clon»). Una vez que algún usuario ha terminado el desarrollo entonces guarda su versión (llamado «commits»), y lo envía de vuelta («push» y «merge») al repositorio central.
Git y Github
Git es la aplicación desarrollada para el control de versiones. y puede estar instalada en Mac, windows y linux, cada uno con sus particularidades.
GitHub es una plataforma web construida sobre la tecnología git para hacerlo más facilmente colaborativa. También ofrece características adicionales como gestión de usuarios, solicitudes de extracción, automatización. Otras alternativas son por ejemplo GitLab y Sourcetree.
Terminología y comandos básicos de Git
- Repository – Compendio de datos de todas las ramas y confirmaciones de un solo proyecto. El comando
git init
crea un nuevo repositorio en tu computadora local. - Branch – Estado alternativo o línea de desarrollo particular para un repositorio. El comando
git branch
crea o elimina ramas.git checkout
cambia de rama o deshace los cambios realizados en los archivos locales. - Merge – Fusionar dos (o más) ramas en una sola rama, para convertirse en la rama principal.
git merge
combina ramas para formar una sola. - Clone – Crear una copia local del repositorio remoto.
git clone
clona un repositorio remoto existente para comenzar a desarrollar. - Origin – Alias común para el repositorio remoto a partir del cual se creó el clon local.
- Main/Master – Nombre de la rama raíz, que es la fuente inicial del proyecto.
git status
muestra qué archivos han cambiado. - Stage – Elegir qué archivos formarán parte de un nuevo commit. Con
git add
elegimos los archivos a guardar. - Commit – Una instantánea guardada de los cambios por etapas realizados en los archivos del repositorio.
git commit
guarda una instantánea de los archivos elegidos. - HEAD – Abreviatura de la confirmación actual en la que se encuentra actualmente su repositorio local.
- Push – Enviar los cambios al repositorio remoto para que todos los vean.
git push
envía una versión guardadaa (commit) al repositorio remoto. - Pull – Obtener los últimos cambios (del equipo) del proyecto en un repositorio local.
git pull
extrae las confirmaciones recientes realizadas por otros desarrolladores en tu computadora local. - Pull request – Mecanismo para revisar y aprobar sus cambios antes de fusionarlos con main/master.
Lo que no debes hacer con Git
Git es un sistema de control de versiones diseñado para servir a los desarrolladores de software para tener versiones de código. Tiene excelentes herramientas para manejar el código fuente y otro contenido relacionado como configuración, dependencias, documentación. No está diseñado para contener datos.
En el desarrollo de software, el código es el principal y todo lo demás sirve al código. En ciencia de datos no es el caso ya que existe una dualidad entre datos y código. No tiene sentido que el código dependa de los datos más de lo que tiene sentido que los datos dependan del código. Deben estar desacoplados y aquí es donde falla el modelo de desarrollo de software centrado en el código. Git no debería ser el punto central de la verdad para un proyecto de ciencia de datos.
Hay extensiones como LFS que se refieren a conjuntos de datos externos de un repositorio de git. Si bien tienen un propósito y resuelven algunos de los límites técnicos (tamaño, velocidad), no resuelven el problema del desarrollo de software centrado en el código.
Sin embargo, siempre tendremos conjuntos de datos el directorio local. La forma correcta de asegurarse de que no es necesario preocuparse por los conjuntos de datos con git es usar el archivo de configuración .gitignore
.
Puede parecer difícil
Aprender Git por primera vez puede ser un desafío, por lo que es necesario más exposición y práctica. Solo mencionamos los conceptos básicos de Git en esta publicación. A medida que aprendamos más sobre Git, descubriremos que los comandos que vimos tienen más usos con pequeños ajustes y que hay varias formas de lograr lo mismo. Git es mucho más capaz de lo que acabamos de describir. El primer paso es practicar con computadora local, y después comenzar a buscar otras funcionalidades útiles, como usar el repositorio remoto, bifurcar, fusionar y crear alias de comandos comunes.
Para seguie con más aprendizaje podemos consultar el manual oficial.