Saltar al contenido principal
InicioTutorialesGit

Tutorial de GitHub y Git para principiantes

Un tutorial para principiantes que muestra cómo funciona el control de versiones Git y por qué es crucial para los proyectos de ciencia de datos.
Actualizado abr 2024  · 17 min leer

Imagen del autor

¿Qué es Git?

Git es un sistema de control de versiones distribuido y de código abierto. Permite a los desarrolladores y los científicos de datos hacer un seguimiento del código, fusionar cambios y volver a versiones anteriores - AWS. Te permite sincronizar los cambios con un servidor remoto. Debido a su flexibilidad y popularidad, Git se ha convertido en un estándar del sector, ya que es compatible con casi todos los entornos de desarrollo, herramientas de línea de comandos y sistemas operativos. 

¿Cómo funciona Git?

Git almacena tus archivos y su historial de desarrollo en un repositorio local. Cada vez que guardas los cambios que has hecho, Git crea una confirmación. Una confirmación es una instantánea de los archivos actuales. Estas confirmaciones están vinculadas entre sí, formando un gráfico del historial de desarrollo, como se muestra a continuación. Nos permite volver a la confirmación anterior, comparar cambios y ver el progreso del proyecto de desarrollo - Azure DevOps. Las confirmaciones se identifican mediante un hash único que se utiliza para comparar y revertir los cambios realizados.  

Un gráfico del historial de desarrollo

Un gráfico del historial de desarrollo

Ramas

Las ramas son copias del código fuente que funcionan en paralelo a la versión principal. Para guardar los cambios realizados, fusiona la rama con la versión principal. Esta característica fomenta el trabajo en equipo sin conflictos. Cada desarrollador tiene su tarea y, usando ramas, pueden trabajar en la nueva característica sin interferencia de otros compañeros de equipo. Una vez finalizada la tarea, puedes fusionar las nuevas características con la versión principal (rama maestra). 

Añadir una nueva función al repositorio
Añadir una nueva función al repositorio


Confirmaciones

Hay tres estados de archivo en Git: modificado, en staging y confirmado. Cuando realizas cambios en un archivo, los cambios se guardan en el directorio local. No forman parte del historial de desarrollo de Git. Para crear una confirmación, primero tienes que poner en staging los archivos cambiados. Puedes añadir o eliminar cambios en el área de staging y luego empaquetar estos cambios como confirmación con un mensaje que describa los cambios.  

Tres estados de archivo en Git
Tres estados de archivo en Git

¿Cuáles son las ventajas de Git?

  • Seguimiento de cambios: Permite a los desarrolladores ver los cambios históricos. El historial de desarrollo facilita la identificación y corrección de errores.
  • Integración IDE: Debido a su popularidad, la integración de Git está disponible en todos los entornos de desarrollo, como VSCode y JupyterLab.
  • Colaboración en equipo: Un equipo de desarrolladores puede ver su progreso y, usando ramas, pueden trabajar individualmente en una tarea y fusionar los cambios con la versión principal. Los pull requests, la resolución de conflictos de fusión y la revisión del código promueven la colaboración en equipo. 
  • VSC distribuido: En un sistema distribuido, no existe un almacenamiento de archivos centralizado. Hay varias copias de seguridad del mismo proyecto. Este enfoque permite a los desarrolladores trabajar sin conexión y confirmar los cambios. 

Git para proyectos de ciencia de datos

Git proporciona control de versiones para scripts, métricas, datos y modelos. Utilizando la extensión de Git git-lfs, puedes almacenar y versionar una gran base de datos y modelos de machine learning. En un proyecto típico de ciencia de datos, tienes un Jupyter Notebook, un conjunto de datos, un modelo, metadatos y métricas del modelo. Los metadatos incluyen archivos que contienen metainformación sobre el modelo de machine learning, características, parámetros del modelo y archivos de automatización. Todo ello es necesario para supervisar el progreso de las aplicaciones de IA y resolver los problemas. 

Seguir los experimentos de ciencia de datos ayuda a los científicos a revertir cambios accidentales, seleccionar el mejor experimento en función de la métrica de rendimiento y colaborar con otros compañeros de equipo. El diagrama siguiente muestra cómo los cambios de los datos o del código afectan a los metadatos y a la salida del modelo. Hacer un seguimiento de estos cambios también puede ayudar a otros compañeros de equipo a encontrar una solución mejor. Aprende todo sobre Git en el blog más reciente de Summer Worsley.

Git para un proyecto de ciencia de datos
Git para un proyecto de ciencia de datos 

Colaboración con GitHub

GitHub es una plataforma de desarrollo de software en la nube. Se suele utilizar para guardar archivos, hacer un seguimiento de los cambios y colaborar en proyectos de desarrollo. En los últimos años, GitHub se ha convertido en la plataforma social más popular para las comunidades de desarrollo de software. Las personas pueden contribuir a proyectos de código abierto e informes de errores, debatir nuevos proyectos y descubrir nuevas herramientas. 

Los científicos de datos y los ingenieros de machine learning siguen el camino de los desarrolladores de software e integran el flujo de trabajo con GitHub. De este modo, pueden compartir su trabajo de investigación, permitir la contribución de la comunidad y colaborar con equipos de datos. En esta plataforma encontrarás todo tipo de proyectos de ciencia de datos y machine learning, guías, tutoriales y recursos. Para los estudiantes, la plataforma se ha convertido en una oportunidad para adquirir experiencia laboral y, con el tiempo, conseguir un empleo en una empresa de prestigio. 

Portafolio

La mayoría de las empresas técnicas te pedirán los proyectos del portafolio o el perfil de GitHub. Esto las ayuda a determinar si un candidato encaja bien. Es muy recomendable crear un perfil de GitHub y actualizarlo regularmente. Los responsables de contratación siempre están buscando candidatos con gran experiencia en el desarrollo de software y que contribuyan a proyectos de código abierto. Ser capaz de analizar el portafolio de GitHub les ayuda a preparar preguntas para las entrevistas técnicas. 

Perfil de GitHub
Perfil de GitHub

GitHub permite a los científicos de datos mostrar sus proyectos, y también puede contar como experiencia laboral en tu currículum. Mostrar los proyectos del portafolio también crea oportunidades para colaborar, lanzar una startup e investigar el trabajo. 

Proyectos del portafolio
Proyectos del portafolio

Características

GitHub también proporciona otras características que son tan importantes como mostrar un portafolio. Es necesario que conozcas cada característica para que puedas incorporarla a tus proyectos de ciencia de datos. 

  • Código abierto: GitHub proporciona un ecosistema completo para proyectos de código abierto. Puedes patrocinar a los mantenedores, contribuir a un proyecto, utilizar la herramienta de código abierto en tu proyecto existente y promocionar tu trabajo. 
  • Colaboración comunitaria: GitHub se ha convertido en una plataforma comunitaria en la que se pueden debatir problemas, peticiones de características, código y contribuciones de documentación. 
  • Explore: La pestaña Explore de GitHub te ayuda a descubrir nuevos proyectos, herramientas que son tendencia y eventos para desarrolladores. 
  • Gists de GitHub: Puedes compartir el fragmento de tu código o incrustarlo en un blog o un sitio web. 
  • CLI de GitHub: Te permite realizar peticiones de fusión, revisar código, comprobar incidencias y supervisar el progreso desde la interfaz de línea de comandos. 
  • Almacenamiento gratuito: almacenamiento ilimitado de repositorios privados y públicos.
  • Alojamiento web: Puedes publicar la documentación o el sitio de tu portafolio. Las páginas de GitHub proporcionan una experiencia de sitio web fácil de construir e implementar. 
  • Codespace: un entorno de desarrollo en la nube integrado con tu repositorio de GitHub. 
  • Project: una herramienta personalizable y flexible para la planificación y el seguimiento del trabajo en GitHub.
  • Automatización: GitHub Action automatiza el flujo de trabajo de desarrollo, como la compilación, la prueba, la publicación, la versión y la implementación.
  • Sponsor: Puedes apoyar tu proyecto o a tus desarrolladores de código abierto favoritos pagando una cuota mensual o única. También permite a los desarrolladores utilizar plataformas de pago de terceros, como ko-fi. 

Comandos básicos

Antes de pasar a la gestión de proyectos de ciencia de datos, vamos a conocer los comandos de Git más comunes, que utilizarás en todos los proyectos de ciencia de datos. Entre los comandos básicos se incluyen inicializar el repositorio de Git, guardar los cambios, comprobar los registros, enviar los cambios al servidor remoto y fusionar. 

  • git init crea un repositorio de Git en un directorio local.
  • git clone <dirección-repositorio-remoto>: copia todo el repositorio de un servidor remoto en el directorio remoto. También puedes utilizarlo para copiar repositorios locales.
  • git add <archivo.txt>: añade un único archivo o varios archivos y carpetas al área de staging.
  • git commit -m "Mensaje": crea una instantánea de los cambios y la guarda en el repositorio. 
  • git config se utiliza para establecer configuraciones específicas de usuario, como el correo electrónico, el nombre de usuario y el formato de archivo. 
  • git status muestra la lista de archivos cambiados o que aún tienen que pasar por el staging y la confirmación.  
  • git push <nombre-remoto> <nombre-rama>: envía las confirmaciones locales a la rama remota del repositorio.  
  • git checkout -b <nombre-de-la-rama>: crea una nueva rama y cambia a una nueva rama.
  • git remote -v: ver todos los repositorios remotos.
  • git remote add <nombre-remoto> <host-o-URLremota>: añade el servidor remoto al repositorio local. 
  • git branch -d <nombre-de-la-rama>: elimina la rama.
  • git pull fusiona confirmaciones en un directorio local desde un repositorio remoto. 
  • git merge <nombre-de-la-rama>: tras resolver los conflictos de fusión, el comando mezcla la rama seleccionada con la rama actual.
  • git log muestra una lista detallada de confirmaciones de la rama actual.

Desarrollo completo con GitHub
Desarrollo completo con GitHub

Si te interesa aprender más comandos, consulta la hoja de trucos de Git de Gitlab. 

Cómo empezar

En esta sección, vamos a utilizar Git para hacer el seguimiento de un proyecto de ciencia de datos y GitHub como servidor remoto. Aprenderemos a instalar Git, crear y clonar un repositorio desde GitHub, ejecutar experimentos de machine learning y enviar cambios (cuaderno de trabajo, modelo, datos) a GitHub utilizando Windows PowerShell 7.  

Instalación de Git

Git es compatible con todos los sistemas operativos. Puedes instalarlo utilizando herramientas de línea de comandos o descargando e instalando directamente la configuración. 

Linux

Para sistemas operativos basados en Debian/Ubuntu utiliza `apt-get install git`, y si utilizas otro sistema basado en Linux, consulta la lista completa de comandos de instalación aquí.

macOS

Si tienes homebrew instalado, utiliza este comando para descargar e instalar Git: `brew install git`. También puedes descargar el instalador binario y ejecutar la configuración.

Windows

Instalar Git en Windows no tiene complicaciones. Solo tienes que ir a la página de descargas, hacer clic en la versión específica de Windows y descargar e instalar la configuración. Si tienes una herramienta winget, puedes instalarlo escribiendo `winget install --id Git.Git -e --source winget` en PowerShell. 

Después de instalar Git, asegúrate de haber configurado el nombre de usuario y el correo electrónico. Esta información se utiliza para firmar las confirmaciones. 

git config --global user.name "your-user-name"
git config --global user.email "your@email.com"

Para obtener información más detallada sobre cómo instalar Git, haz clic aquí

Inicialización del proyecto

Si tienes una cuenta de GitHub, haz clic en el botón + y selecciona un nuevo repositorio. Después, escribe el nombre del repositorio y añade una descripción sencilla. Se creará un repositorio público vacío. 

Creación del proyecto
Creación del proyecto

Hay muchas formas de clonar repositorios remotos en el directorio local, y GitHub proporciona una guía detallada sobre cómo clonar, añadir remotos e inicializar un proyecto Git.  

Clonación de GitHub
Clonación de GitHub

Podemos simplemente clonar el repositorio proporcionando un enlace HTTPS. Asegúrate de estar en el directorio de trabajo utilizando el símbolo del sistema o PowerShell. 

git clone https://github.com/kingabzpro/DataCamp-Git.git

>>> Cloning into 'DataCamp-Git'...
>>> warning: You appear to have cloned an empty repository.

cd .\DataCamp-Git\

O

Crea un nuevo directorio llamado "DataCamp-Git" e inicializa Git mediante un sencillo comando. Después, añade una conexión al repositorio remoto para que puedas sincronizar tu trabajo con GitHub.

mkdir DataCamp-Git
cd .\DataCamp-Git
git init

>>> Initialized empty Git repository in C:/Repository/GitHub/DataCamp-Git/.git/

git remote add origin https://github.com/kingabzpro/DataCamp-Git.git

O

Si ya tienes un proyecto en un directorio, solo tienes que inicializar Git utilizando `git init` y añadir el remoto de GitHub, como se muestra arriba. 

Confirmación sencilla

Antes de añadir archivos a nuestro repositorio, asegúrate de estar en el directorio local correcto. 

Empezaremos de forma sencilla y crearemos un archivo README con el título DataCamp-Git. A continuación, lo añadiremos al área de staging utilizando `git add`. 

echo "# DataCamp-Git" >> README.md
git add README.md

El estado de Git muestra que estamos en la rama principal y que el archivo `README.md` está en staging y listo para confirmarse.  

git status

>>> On branch main
>>> No commits yet
>>> Changes to be committed:
  (use "git rm --cached ..." to unstage)
        new file:   README.md

Para crear nuestra primera confirmación, utilizaremos `git commit` con un mensaje. Como podemos observar, la primera confirmación se añade bajo el hash ed9c886.

git commit -m "first commit"

>>> [main (root-commit) ed9c886] first commit
>>> 1 file changed, 1 insertion(+)
>>> create mode 100644 README.md

Añadir archivos de proyecto

Utilizaremos MasterCard Stock Price with LSTM and GRU de DataCamp workspace y los archivos de descarga. El autor del proyecto ha preprocesado los datos y ha entrenado datos de series temporales en los modelos LSTM y GRU. Aprende más sobre el proyecto leyendo Tutorial de redes neuronales recurrentes (RNN).

Para guardar el archivo de modelo, hemos añadido una nueva celda de código en Jupyter Notebook en el proyecto. El nuevo script creará un nuevo directorio llamado "model" y guardará los modelos LSTM y GRU. 

!mkdir -p model
model_lstm.save('model/LSTM')
model_gru.save('model/GRU')

Como podemos ver, el repositorio de Git tiene una carpeta de datos que contiene archivos CSV, la carpeta del modelo con el peso y los metadatos del modelo. 

Carpeta de datos de Git

Ahora pondremos en staging todos los archivos. Puedes añadir cualquier directorio, archivo o dato después del comando inicial. 

git add .\data .\model LSTM_GRU.ipynb RNN.png

O

Si quieres añadir todos los archivos al área de staging, utiliza punto. 

git add .

Confirmar y enviar

Confirmaremos todos los cambios con un sencillo mensaje, y la salida mostrará todos los archivos nuevos en modo de crear. 

git commit -m "project files added"

>>> [main aa3e19a] project files added
>>>  10 files changed, 5020 insertions(+)
>>>  create mode 100644 LSTM_GRU.ipynb
>>>  create mode 100644 RNN.png
>>>  create mode 100644 data/Mastercard_stock_history.csv
>>>  create mode 100644 data/Mastercard_stock_info.csv
>>>  create mode 100644 model/GRU/saved_model.pb
>>>  create mode 100644 model/GRU/variables/variables.data-00000-of-00001
>>>  create mode 100644 model/GRU/variables/variables.index
>>>  create mode 100644 model/LSTM/saved_model.pb
>>>  create mode 100644 model/LSTM/variables/variables.data-00000-of-00001
create mode 100644 model/LSTM/variables/variables.index

La sincronización con el repositorio remoto de GitHub requiere un nombre remoto y un nombre de rama `git push <nombre remoto> <nombre de rama>`. Si solo tienes un remoto y una rama, funcionará usar `git push`.  

Después de `git push`, la ventana emergente te pedirá las credenciales: solo tienes que añadir tu nombre de usuario o contraseña de GitHub. También puedes generar tokens de acceso personales y añadirlos en lugar de la contraseña. Aprende más leyendo el Tutorial de Git Push y Pull.

git push

>>> Enumerating objects: 21, done.
>>> Counting objects: 100% (21/21), done.
>>> Delta compression using up to 4 threads
>>> Compressing objects: 100% (19/19), done.
>>> Writing objects: 100% (21/21), 1.83 MiB | 1.59 MiB/s, done.
>>> Total 21 (delta 2), reused 0 (delta 0), pack-reused 0
>>> remote: Resolving deltas: 100% (2/2), done.
>>> To https://github.com/kingabzpro/DataCamp-Git.git
>>>  * [new branch]      main -> main

Vamos a comprobar nuestro repositorio de GitHub kingabzpro/DataCamp-Git para ver si hemos enviado correctamente los cambios al remoto. El repositorio de GitHub tiene todos los archivos, datos y modelos.

Envío remoto a GitHub
Envío remoto a GitHub

Ramas de Git

Se recomienda trabajar con ramas: por ejemplo, si quieres trabajar en la documentación del proyecto, crea una rama de documentación utilizando `git checkout` o `git branch`. Haz cambios en el archivo README y cuando hayas finalizado los cambios, fusiona la rama con la base. 

En nuestro caso, hemos creado una nueva rama llamada `readme` y cambiado a ella.

git checkout -b readme

Vamos a editar el archivo README añadiendo una descripción al proyecto y a enlazar el tutorial y DataCamp workspace de RNN. Después, pondremos en staging los cambios y guardaremos una instantánea de los cambios con un mensaje.

git add README.md
git commit -m "project description and links to blog"

>>> [readme f3b8b9b] project description and links to blog
>>>  1 file changed, 8 insertions(+)

El repositorio remoto no tiene una rama readme. Para crear una nueva rama y enviar los cambios, utilizaremos "readme:readme". La salida del comando muestra que se han creado nuevas ramas y que las ramas `readme` local y remota están sincronizadas. 

git push origin readme:readme
>>> remote: Resolving deltas: 100% (1/1), completed with 1 local object.
>>> remote: Create a pull request for 'readme' on GitHub by visiting:
>>> remote:  https://github.com/kingabzpro/DataCamp-Git/pull/new/readme
>>> remote:
To https://github.com/kingabzpro/DataCamp-Git.git
>>>  * [new branch]      readme -> readme

Puedes observar que hemos enviado correctamente la rama local a GitHub con una versión modificada del archivo README.md. 

Rama Readme en GitHub
Rama Readme en GitHub

Pull Request

Esta funcionalidad es habitual en las organizaciones. Por ejemplo, un desarrollador de software ha trabajado en una nueva característica y quiere fusionar los cambios con la rama remota principal. Ahora crearemos pull requests con la GUI de GitHub haciendo clic en el botón de pull request. Después, selecciona la rama readme que queremos fusionar con la base (principal). Puedes escribir una explicación detallada de las características añadidas y hacer clic en el botón de pull request. 

Pull request de readme a la rama principal
Pull request de readme a la rama principal

El mantenedor del repositorio comparará tus cambios y los fusionará cuando hayan superado todas las pruebas. En nuestro caso, tú eres el mantenedor, así que haz clic en la petición de fusión para mezclar los cambios con la rama principal. 

Fusionar pull request de GitHub
Fusionar pull request en GitHub

Enhorabuena, hemos creado correctamente un pull request y lo hemos fusionado con la rama principal. Puedes ver los cambios de la rama principal aquí

Si quieres ver todos los cambios de tu repositorio de git, escribe `git log` y se mostrarán los cambios históricos de tu proyecto. Registrar los cambios en los proyectos de ciencia de datos es importante, y Git nos ayuda a rastrear todos los cambios, incluso en grandes conjuntos de datos. 

Historial de registros de Git
Historial de registros de Git

Conclusión

GitOps es crucial para el desarrollo de aplicaciones de datos. Se ha convertido en una habilidad esencial para todo tipo de trabajos de TI; incluso los investigadores académicos lo utilizan para compartir código experimental con un público más amplio. Por otro lado, GitHub desempeña un papel más importante en la promoción de proyectos de código abierto, proporcionando un ecosistema de desarrollo de software gratuito para todos. 

En este tutorial, hemos aprendido sobre Git y GitHub y sobre por qué son importantes para los proyectos de ciencia de datos. El tutorial también te presenta comandos básicos de Git y proporciona experiencia práctica sobre cómo hacer un seguimiento de los cambios de los datos, el modelo y el código. Si te interesa aprender más sobre Git, haz el curso Introducción a Git en DataCamp.  



Preguntas frecuentes sobre Git

¿Qué es Git?

Un sistema de control de versiones distribuido de código abierto. Permite a los desarrolladores almacenar, versionar y visualizar los cambios en un proyecto de desarrollo. Fomenta el trabajo en equipo flexible y el flujo de trabajo optimizado. 

¿Qué significa Git?

No es una sigla. Según su creador, Linus Torvalds, "Git puede significar cualquier cosa, dependiendo de tu estado de ánimo". Es una combinación de tres letras aleatorias que no utiliza ningún comando UNIX.  

¿Cómo clono un repositorio Git?

Escribe `git clone <dirección del repositorio remoto>` en un terminal. Puedes clonar repositorios locales y remotos. Admite los protocolos SSH y HTTPS.

¿Cómo eliminar una rama en Git?

Para eliminar una rama local, utiliza `git branch -d <nombre_rama_local>`, y para eliminar la rama remota, utiliza `git push <nombre_remoto> -d <nombre_rama_remota>`.

¿Cómo cambiar de rama en Git?

Cambia a una rama existente utilizando `git checkout <nombre de rama>` o crea una rama nueva y cambia a ella utilizando `git checkout -b <nombre de rama>`.

¿Cómo instalo Git?

Para sistemas Linux utiliza `apt-get install git`, y para otros sistemas operativos consulta git-scm.com.

¿Git es gratuito?

Sí, es gratuito y de código abierto con licencia GPL-2.0.

¿Qué es Git Bash?

Es una aplicación de Microsoft Windows que proporciona utilidades y experiencia de shell de Unix. 

¿Cómo crear una nueva rama en Git?

Utiliza el comando `git branch <rama-nueva> <rama-base>` en el terminal. Para crear una nueva rama y cambiar a ella, utiliza `git checkout -b <nombre de la rama>`.

¿Qué hace git pull?

Actualiza la versión local de un repositorio desde un servidor remoto, copia todos los cambios de un repositorio remoto y los fusiona con el directorio local. Este proceso suele requerir resolución de conflictos de fusión. 

Temas
Relacionado

Principales conferencias sobre ciencia de datos para 2024

En este artículo, describiremos las impresionantes conferencias sobre ciencia de datos a las que asistir en 2024.

Kevin Babitz

10 min

Científico de datos vs. Ingeniero de datos

Explicación de las diferencias entre ingenieros de datos y científicos de datos: responsabilidades, herramientas, lenguajes, perspectivas laborales, salario, etc.
Karlijn Willems's photo

Karlijn Willems

11 min

¿Qué es la ciencia de datos? Definición, ejemplos, herramientas y más

La ciencia de datos es un campo interdisciplinar que utiliza métodos, procesos, algoritmos y sistemas científicos para extraer conocimientos e ideas de datos estructurados y sin estructurar.
Matt Crabtree's photo

Matt Crabtree

15 min

¿Qué es shell?

Descubre qué es shell y cómo aprenderlo puede convertirte en un científico de datos más eficiente y versátil.

Wendy Gittleson

13 min

Tutorial de GIT Push y Pull

Aprende a realizar solicitudes de Git PUSH y PULL con GitHub Desktop y la línea de comandos.

Olivia Smith

13 min

Tutorial de Chroma DB: guía paso a paso

Con Chroma DB, puedes gestionar fácilmente documentos de texto, convertir texto en incrustaciones y hacer búsquedas por similitud.
Abid Ali Awan's photo

Abid Ali Awan

10 min

See MoreSee More