42 - Taller de Git y GitHub
Antonio Galán
Created on December 22, 2022
More creations to inspire you
THE MESOZOIC ERA
Presentation
GROWTH MINDSET
Presentation
VISUAL COMMUNICATION AND STORYTELLING
Presentation
ASTL
Presentation
TOM DOLAN
Presentation
BASIL RESTAURANT PRESENTATION
Presentation
AC/DC
Presentation
Transcript
Acceder a las diapositivas
Bienvenidos
venidos
Bienbenidos
Bien
benidos
5ª edición
Git y GitHub(
Remoto
Local
Similitudes y diferencias características
Perfiles de usuario y de organización
Gestión de proyectos y reparto de tareas
Projects y Wikis
Entender y colaborar en repositorios
Issues, Milestones y Pull Requests
El poder del Octocat y cómo usarlo
07 - Fundamentos de GitHub
Conexión entre local y remoto
06 - Fundamentos de Git remoto
Cosas interesantes a tener en cuenta
05 - Funcionalidades extra
El poder del Kraken y cómo usarlo
04 - Ramificación
Primeros pasos de todo programador
03 - Fundamentos de Git local
Preparando el entorno de trabajo
02 - Configuración inicial
Qué saber antes de empezar
01 - Introducción
Índice
Parte 1Git y los repositorios locales
Git y GitHub(
Una guía no tan intergaláctica para los estudiantes de 42 Málagasobre cómo utilizar Git y GitHub, buenas prácticas y recomendaciones
01
Introducción
Antes de empezar...
¿Por qué es bueno usar Git?
Necesario en el mundo laboral
No más copias de lo mismo
Compartir proyectos y colaborar en ellos
Agilidad, productividad y eficiencia
Diferencia de conceptos
PlataformaOnlinePúblico / privado
Sitio web de administración de repositorios
TecnologíaLocalPrivado
Software de control de versionesde un proyecto
VS
GitHub
Git
02
Configuracióninicial
Ya que estamos, vamos a hacer las cosas bien
- Valores de configuración global: ~/.gitconfig
- Valores de configuración local: .git/config
Configuración de Git
Archivo de configuración que se utiliza para personalizar la forma en que Git funciona en el sistema del usuario.
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.
1. Crear un par de claves con el comando ssh-keygen.2. Pegar la clave pública en los ajustes de GitHub.
Protocolo SSH
Sincronización de repositorios segura y sin necesidad de ingresar credenciales cada vez que se realiza una conexión.
03
Git localFundamentos
Los primeros pasos de todo buen programador
¿Qué es un repositorio?
Wikipedia
" 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. "
.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.
Por otro lado,en la práctica...
Inicializar un repositorio
Consiste en identificar una carpeta como un repositorio.Ya está, eso es todo.
Confirmocambios
Añadocambios
Hagocambios
¿Cómo se usa un repositorio local?
Git se usa para llevar un control de los cambios sobre un proyecto.Este control se hace de la siguiente forma:
Flujo de uso de Git
Repositorio(Working Area)
Área de Preparación(Staging 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.
Área de Trabajo actualizada
Repositorio
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.
¿Qué es un commit?
" Un commit es un punto en la historia del repositorio querepresenta un conjunto de cambios en los archivos. "Además, 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
reset
reset
commit
add
log
status
Flujo de uso de Git- resumen -
Repositorio(Working Area)
Área de Preparación(Staging Area)
Área de Trabajo(Working Area)
04
Ramificación
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
Como una rama es una copia independiente del repositorio en la que se pueden realizar cambios sin afectar a otra 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.
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 -
Comandos útiles para mejorar la experiencia
05
Funcionalidades extra
Cosas que no sabía dónde colar en otras secciones
Los Alias
Básicamente, un alias permite crear comandos de git personalizados usando otros comandos de git ya existentes, así como sus opciones.
Las Etiquetas
Se usan para marcar puntos importantes en la historia de un repositorio; normalmente, puntos de publicación (v1.0, v2.0, ...).Sus comandos siguen una sintaxis similar a los comandos de las ramas.
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.
El RTFManual
Las sagradas escrituras.
Hispasec Sistemas S.LTécnico de SOC L2 · Coordinador de intervencionesNov. 23 - Abr. 24
._.
Sr. Galán antgalanCiberseguridad · ProductividadUsando Git y GitHub desde hace 8 años
Bootcamp de CiberseguridadEstudiante Jul. 23 - Sep. 23 (1ª ed.)Mentor Mar. 23 - Jun. 23 (2ª ed.)
Universidad de MálagaGraduado en Ingeniería InformáticaTecnologías de la Información
Información de contacto y perfiles
Sobre mí
Parte 2GitHub y los repositorios remotos
Git y GitHub(
Una guía no tan intergaláctica para los estudiantes de 42 Málagasobre cómo utilizar Git y GitHub, buenas prácticas y recomendaciones
06
Git remotoFundamentos
La superautopista de los cambios
¿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. "
Repositorio remoto
Descargo cambios
Publico cambios
Confirmocambios
Añadocambios
Hagocambios
Repositorio local
¿Cómo se usa un repositorio remoto?
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 clone?
" 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.
¿Qué es un submódulo?
" Un clon de un repositorio, dentro de otro repositorio. "
Descargo cambios
Publico cambios
Descargo cambios
Publico cambios
Submódulo remoto
Repositorio remoto
Confirmocambios
Confirmocambios
Añadocambios
Añadocambios
Hagocambios
Hagocambios
Submódulo
¿Cómo se usa un submódulo?
Repositorio local
Tratamiento de 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.
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
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.
Cambiar referencias remotas
Ejemplo
Actualizar referencias remotas
Revisa las referencias remotas y actualiza el repositorio local con ellas.Esta acción no afecta a los cambios locales, sino que sirve para saber si el repositorio remoto ha sido modificado y, en caso de ser así, descargue las referencias (commits, ramas, tags...) que sean necesarias.Los cambios pueden aplicarse haciendo una fusión (merge) con las referencias actualizadas.
Descargar cambios
Actualizar el repositorio local con cambios remotos.Literalmente la función opuesta al push: todo lo que se tuvo en cuenta en esa sección es aplicable a esta, la única diferencia es que ahora los cambios van en la dirección opuesta.Corresponde a hacer fetch + merge.
Ejemplo
07
GitHubFundamentos
¡Basta de comandos! Por fin, una interfaz
¿Qué es un fork?
" Una copia exacta de un repositorio de otro usuario que sealmacena en la cuenta del usuario que realizó el fork. "Esto permite a dicho usuario modificarlo y experimentar con él sin afectar al repositorio original; o bien, realizar cambios y solicitar que se incluyan en el repositorio original, contribuyendo a la comunidad.
clon
fork
·.·
·.·
._.
._.
Repositorio remoto B
Repositorio remoto A- forked -
Repositorio remoto A
Repositorio remoto A
Repositorio local "A"
Repositorio local A
Repositorio local A- clonado -
Clon VS fork
Página principal
Página de un repositorio
Página de un repositorioIssues, Labels y Milestones
Página de un repositorioPull Requests
Página de un repositorioProyectos
Página de un repositorioWiki
Página de un usuario
Página de una organización
¡Gracias!