Want to create interactive content? It’s easy in Genially!

Get started free

42 - Taller de Git y GitHub

Mi equipo

Created on December 22, 2022

Start designing with a free template

Discover more than 1500 professional designs like these:

Practical Presentation

Smart Presentation

Essential Presentation

Akihabara Presentation

Pastel Color Presentation

Modern Presentation

Relaxing Presentation

Transcript

Bienvenidos

diapositivas

Piscina de

Taller de

Git y GitHub

6ª edición

Martes

Miércoles

Jueves

Lunes

Viernes

· tipos de tableros· issues y "tareas" · milestones e "hitos"

Proyectos

HTTPS y SSH

Clones y Forks

· HEAD· modificar ramas · fusionar ramas

Ramificación

Configuración

· definir cambios· añadir cambios · confirmar cambios

· repos remotos· publicar cambios· descargar cambios

Sincronización

Flujo de uso

· menú principal· funcionalidades · tipos de perfiles

GitHub

Stash

El contenido extra de esta sesión es más tiempo de práctica

Práctica final

Submódulos

Etiquetas

README

Aliases

Práctica III

Práctica I

Práctica IV

Práctica II

Sr. Galán NPC Ciberseguridad · Programación · Productividad 8 años de experiencia con Git y GitHub

._.

Universidad de Málaga ETSII

  • Graduado en Ingeniería InformáticaTecnologías de la Información

42 Málaga

  • Cybermentor en el Boot. de Ciberseguridad ( 2ª ed. )Abr. 23 - Jul. 23 ( 3 meses )
  • Estudiante en el Boot. de Ciberseguridad ( 1ª ed. )Jul. 22 - Sep. 22 ( 2 meses )

Cloud y Olé

  • Desarrollador · Administrador de SistemasMay. 24 - actualidad

Contacto y perfiles

Hispasec Sistemas S.L

  • Coor. de intervenciones · SOC L2 · Analista de ciberseguridadFeb. 24 - Abr. 24 ( 3 meses )
  • Técnico de intervenciones · SOC L1Nov. 23 - Ene. 24 ( 3 meses )

Introducción

00

Antes de empezar...

¿Por qué es bueno usar Git?

Agilidad, productividad y eficiencia

Compartir proyectos y colaborar en ellos

Necesario en el mundo laboral

No más copias de lo mismo

Diferencia de conceptos

GitHub

Git

Software de control de versionesde un proyecto

Sitio web de administración de repositorios

VS

Tecnología Sistema (local)

Plataforma Internet (online)

Fundamentos de Git local

Sesión 1

  • Modificar la configuración de Git alterando su funcionamiento
  • Usar Git sabiendo lo que hacemos y con buenas prácticas
  • Crear nuestros propios comandos de Git para crear funcionalidades
  • Ignorar archivos innecesarios para un repositorio con .gitignore

Configuración local y global

01

Ya que estamos, vamos a hacer las cosas bien

Configuración de Git

Archivo de configuración que se utiliza para personalizar la forma en que Git funciona en el sistema del usuario.

  • Valores de configuración global: ~/.gitconfig
  • Valores de configuración local: .git/config

Cambiar la configuración

  • Modificando el archivo de texto que contiene las opciones de conguración y sus valores.
  • Ejecutando comandos que modifican una opción concreta de la configuración.

Lo básico de Git

02

Los primeros pasos de todo buen programador

¿Qué es un repositorio?

" Un espacio centralizado donde se almacena, organiza, mantiene y difunde información digital, habitualmente archivos informáticos, que pueden contener trabajos científicos, conjuntos de datos o software. "

Wikipedia

Por otro lado, en la práctica...

.git

Una carpeta que contendrá información sobre las versiones de un software. Una carpeta es un repositorio si contiene una carpeta oculta llamada .git.

Inicializar un repositorio

Consiste en identificar una carpeta como un repositorio. Ya está, eso es todo.

¿Cómo se usa un repositorio local?

Git se usa para llevar un control de los cambios sobre un proyecto.

Hago cambios

Añado cambios

Confirmo cambios

Flujo de uso de Git

Área de Preparación (Staging Area)

Repositorio (Working Area)

Área de Trabajo (Working Area)

Área de Trabajo

La ubicación de los archivos en el ordenador (literalmente una carpeta).

Área de Preparación

Una zona de la memoria en la que se almacenan los archivos en un estado concreto antes de ser confirmados.

Repositorio

Área de Trabajo actualizada

Se han confirmado los cambios en esos archivos, y por tanto, el Área de Trabajo ha sido actualizada con nuevas modificaciones. Esto representa un estado del Repositorio.

¿Qué es un cambio?

" Un cambio es cualquier modificación sobre el contenido de un fichero, incluido la creación y eliminación del mismo. "

Añadir cambios

Consiste en indicar qué cambios pasarán al stage, para posteriormente ser guardados en commits.

Ver el estado del repositorio

Consiste en obtener información sobre los archivos que han sido modificados o añadidos al stage, así como de los archivos que aún no tienen seguimiento. En resumen, ofrece información sobre el estado actual del repositorio, en función de los cambios que hay en sus archivos.

Extraer cambios

Consiste en devolver cambios almacenados en el stage de nuevo al área de trabajo. Cabe destacar que esta acción no deshace los cambios, solo los devuelve al área de trabajo.

El archivo .gitignore

Excluye archivos o directorios de un repositorio, evitando que sean incluidos en el seguimiento de versiones.

  • Utiliza patrones de globbing para especificar qué excluir, uno por línea.
  • Tiene efecto sobre su ubicación y todas las carpetas inferiores, recursivamente.

¿Qué es un commit?

" Un commit es un punto en la historia del repositorio que representa un conjunto de cambios en los archivos. " Al historial de commits se le conoce como Árbol de Trabajo.

Estructura de un commit

Confirmar cambios

Crear un commit en la historia del repositorio con todos los cambios incluidos en el stage. Una vez creado, los cambios incluidos en ese commit se fijan en el historia del repositorio, permitiendo a los usuarios controlar y documentar los cambios realizados.

Revisar el árbol de trabajo

Útil para ver la historia del repositorio y para entender qué cambios se han realizado en el repositorio a lo largo del tiempo. También es útil para buscar commits concretos en base a su información, ya que ofrece muchos campos relevantes.

Modificar un commit

Permite añadir más cambios al último commit o modificar su mensaje. Útil cuando se ha realizado un commit y luego se ha descubierto un error o se han olvidado algunos cambios importantes; o bien corregir errores en el mensaje o proporcionar más información sobre los cambios realizados.

Deshacer un commit

Útil para deshacer cambios no deseados en un repositorio y para reorganizar la historia del repositorio. También es útil para rehacer commits que contienen errores o cambios no deseados

Flujo de uso de Git - resumen -

Área de Preparación (Staging Area)

Repositorio (Working Area)

Área de Trabajo (Working Area)

add
commit
reset
reset
status
log

El RTFManual

Las sagradas escrituras.

extra

Los Alias

Básicamente, un alias permite crear comandos de git personalizados usando otros comandos de git ya existentes, así como sus opciones.

Ramificación

Sesión 2

  • Programar con ramas para organizarnos y colaborar más y mejor
  • Usar etiquetas para marcar determinados puntos de la historia

Ramificación

03

Liberando al Kraken

¿Qué es una rama?

" Una rama es un puntero a un commit. " Normalmente las ramas se representan como secuencias de commits para una mayor comprensión.

Crear una rama

Las ramas se usan para organizar y aislar cambios, lo que permite trabajar de forma simultánea en conceptos independientes. Esto hace que sea más fácil colaborar con otros desarrolladores y hacer cambios sin tener que preocuparse por romper el código en la rama principal.

Cambiar de rama

Será necesario moverse de una rama a otra según la situación y las necesidades lo requieran, en función de los cambios y la estructura que siga el repositorio.

  • Los cambios se arrastran entre ramas.
  • Los cambios incompatibles impiden cambiar de rama.

Ejemplo

Fusionar cambios

Consiste en combinar los cambios de una rama en otra rama especificada. Útil cuando se han hecho cambios en varias ramas y se quieren combinar en una sola, o para integrar cambios de forma organizada y controlada al trabajar en proyectos colaborativos.

Ejemplo

Eliminar una rama

Como las ramas son punteros, borrar una rama es eliminar su referencia.

  • Los commits no se eliminan salvo que se especifique.
  • Los commits fusionados no se borran nunca.

Ejemplo

El Stash

Permite guardar los cambios en una "pila" temporal y recuperarlos más tarde, lo que facilita trabajar en varias tareas a la vez sin preocuparse de perder cambios pendientes. Útil cuando se necesita cambiar de rama o hacer una tarea urgente pero se tienen cambios no confirmados en el repositorio.

Ejemplo

Ejemplo de Libft - desarrollado individualmente -

extra

Las Etiquetas

Las etiquetas son punteros como las ramas, pero hacen referencia a un solo commit, no a un historial. Se usan para marcar puntos importantes en la historia de un repositorio; normalmente, puntos de publicación (v1.0, v2.0, ...).

Fundamentos de Git remoto

Sesión 3

  • Definición de "clon" y conexión repositorios vía HTTPS o SSH
  • Sincronizar cambios entre repositorios remotos y locales
  • Definición de "submódulo" y casos de uso

Sincronización

04

La superautopista de los cambios

Protocolo SSH

Sincronización de repositorios segura y sin necesidad de ingresar credenciales cada vez que se realiza una conexión.

1. Crear un par de claves con el comando ssh-keygen.2. Pegar la clave pública en los ajustes de GitHub.

¿Qué es un repositorio remoto?

" Una copia de un repositorio que se encuentra en un servidor externo al que se puede acceder a través de Internet. "

¿Cómo se usa un repositorio remoto?

Repositorio local
Repositorio remoto

Publico cambios

Hago cambios

Añado cambios

Confirmo cambios

Descargo cambios

Vincular un repositorio

Consiste en enlazar un repositorio local con un repositorio remoto, lo que permite sincronizar el historial de cambios a través de Internet. Útil para poder trabajar en distintos entornos, compartir el trabajo realizado y colaborar con otros usuarios, o bien mantener una copia de seguridad de un proyecto.

¿Qué es un clon?

" Una copia exacta y local de un repositorio remoto. "

Clonar un repositorio

Consiste en descargar una copia de un repositorio remoto, incluyendo sus archivos y su historial de cambios.

Sincronización de repositorios

" Subir o descargar cambios manteniendo tanto el repositorio local como el repositorio remoto en un estado actualizado. " Hay que tener cuidado con las referencias, ya que una disparidad entre una referencia local y remota puede ocasionar conflictos.

Subir cambios

Actualizar el repositorio remoto con cambios locales. Los cambios se mueven por las ramas, por lo que será importante que en repositorios que se usen varias, se gestionen adecuadamente; si no se hace, dará lugar a errores de conflicto.

Ejemplo

Cambiar referencias remotas

Todo funciona mediante referencias, por lo que cambiarlas desde el repositorio local y volver a subirlas, sobreescribirá las referencias que haya en el repositorio remoto. Esto sirve para modificar ramas, etiquetas, historial de cambios... y es peligroso en proyectos colaborativos.

Ejemplo

Actualizar referencias remotas

Revisa las referencias remotas y actualiza el repositorio local con ellas. Esto no afecta a los cambios locales, solo sirve para saber si existen cambios en el repositorio remoto y descargar las referencias necesarias (commits, ramas, etiquetas...). Los cambios pueden aplicarse haciendo una fusión (merge) con las referencias actualizadas.

Descargar cambios

Actualizar el repositorio local con cambios remotos. Se trata de la función opuesta al push. pull = fetch + merge.

Ejemplo

extra

¿Qué es un submódulo?

" Un clon de un repositorio, dentro de otro repositorio. "

extra

¿Cómo se usa un submódulo?

Repositorio local
Repositorio remoto

Hago cambios

Añado cambios

Confirmo cambios

Publico cambios

Descargo cambios

Submódulo
Submódulo remoto

Hago cambios

Añado cambios

Confirmo cambios

Publico cambios

Descargo cambios

extra

Los Submódulos

Consiste en clonar un repositorio dentro de otro y asignarle seguimiento. Útil para dividir un proyecto grande en varios repositorios más pequeños y organizarlos de manera más clara, reutilizar código entre proyectos y mantener un control más preciso sobre las dependencias.

Fundamentos de GitHub

Sesión 4

  • Definición de "fork", características y diferencias con los clones
  • Funcionalidades y características de GitHub
  • Trucos y consejos para construir un README útil y atractivo

GitHub Fundamentos

07

¡Basta de comandos! Por fin, una interfaz

¿Qué es un fork?

" Una copia exacta de un repositorio de otro usuario que se almacena en la cuenta del usuario que realizó el fork. " Esto permite a dicho usuario modificarlo sin afectar al repositorio original; o bien, realizar cambios y solicitar que se incluyan en el repositorio original, contribuyendo a la comunidad.

Diferencias entre "clon" y "fork"

fork

clon

Copia local de un repositorio remoto.

Copia remota de un repositorio remoto, vinculada al original.

VS

Concepto propio de Git

Concepto propio de GitHub(y otras plataformas) Permite interactuar con otros repositorios que no son tuyos

Página principal

Página de un repositorio

Página de un repositorio Issues, Labels y Milestones

Página de un repositorio Pull Requests

Página de un repositorio Proyectos

Página de un repositorio Wiki

Página de un usuario

Página de una organización

El fichero README

extra

  • https://shields.io
  • https://simpleicons.org
  • https://github.com/matiassingers/awesome-readme

¡Gracias!