\documentclass[usepdftitle=false]{beamer} \usepackage[frenchb]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{graphicx} \usepackage{datetime} \usepackage{eurosym} \usepackage[]{url} \usepackage[babel=true]{csquotes} \usepackage{listings} \usepackage{fancyvrb} \usepackage{xcolor} \hypersetup{ pdfauthor={Thibaud Duhautbout - Rémy Huet}, pdftitle={Formation Picaosft : La gestion de version avec Git}, pdfsubject={Formation niveau 2 : concepts avancés}, pdfkeywords={git, gestion de version, VCS}, pdfproducer={Latex}, } \beamertemplatenavigationsymbolsempty \setbeamercolor{orangebox}{bg=orange,fg=black} \setbeamercolor{terminal}{bg=darkgray,fg=white} \definecolor{myGreen}{HTML}{0f8e1d} \newdateformat{nombres}{\THEDAY-\THEMONTH-\THEYEAR} \def\seplength{.3\topsep} % Dans le cas d'une compilation pour la présentation, on active les % pauses dans les slides (inutiles pour la version support à diffuser) \newcommand{\Pause}{% \ifdef{\Release} {\pause} {} } \title[Formation Git\_v2]{Formation Picasoft : La gestion de version avec Git (niveau 2)} \titlegraphic{\includegraphics[scale=.1]{picasoft_logo.png}} \author[T. Duhautbout - R. Huet]{Thibaud {\sc Duhautbout} \\ Rémy {\sc Huet}} \institute[Picasoft]{Association Picasoft} \date[24/10/2018]{Mercredi 24 octobre 2018} \usetheme{AnnArbor} \usecolortheme{crane} \fvset{fontsize=\tiny,commandchars=\\\{\}} \AtBeginSection[] { \begin{frame} \tableofcontents[currentsection, hideothersubsections] \end{frame} } \begin{document} \begin{frame} \titlepage \end{frame} \section{Petits rappels} \begin{frame}[fragile] \frametitle{Gestion de version de base} \framesubtitle{Valider et vérifier ses changements} \begin{block}{Init, status, add, commit} \begin{itemize} \item \verb+git init+ : création d'un dépôt; \item \verb+git status+ : visualisation du statut du dépôt; \item \verb+git add+ : ajout de fichiers dans la zone de validation; \item \verb+git commit -m ``message''+ : validation des changements. \end{itemize} \end{block} \begin{block}{Diff, log} \begin{itemize} \item \verb+git log+ : afficher l'historique des commits; \item \verb+git diff+ : changements par rapport à la zone de validation; \item \verb+git diff + : changements depuis un commit; \item \verb+git diff + : changements entre deux commits. \end{itemize} \end{block} \end{frame} \begin{frame}[fragile] \frametitle{Gestion de version de base} \framesubtitle{Mettre de côté ou annuler ses changements} \begin{block}{Stash} \begin{itemize} \item \verb+git stash+ : mettre ses changements sur la pile stash; \item \verb+git stash pop+ : récupérer le dernier stash. \end{itemize} \end{block} \begin{block}{Checkout} \begin{itemize} \item \verb+git checkout + : remettre son dépôt dans un état antérieur (de manière provisoire et réversible); \item \verb+git checkout master+ : revenir au dernier commit; \item \verb+git checkout -- + : remettre le fichier/dossier dans l'état du dernier commit (irréversible). \end{itemize} \end{block} \end{frame} \begin{frame}[fragile] \frametitle{Gestion de version de base} \framesubtitle{Les remotes} \begin{block}{Clone, pull, push} \begin{itemize} \item Utilisation du GitLab de l'UTC (\url{https://gitlab.utc.fr}); \item \verb+git clone + : récupération d'un dépôt depuis le remote; \item \verb+git pull+ : récupérer des cangements depuis le dépôt en ligne; \item \verb+git push+ : pousser des changements sur le dépôt en ligne. \end{itemize} \end{block} \end{frame} \begin{frame} \frametitle{Avant de commencer} Des questions ? \end{frame} \section{Amélioration de son espace de travail} \subsection{Génération de clé ssh} \begin{frame} \frametitle{Générer sa paire de clés} \framesubtitle{Utilité et théorie} \begin{block}{Pourquoi ?} Une sorte de \enquote{mot de passe} stocké sur la machine, qui permet de s'authentifier à un serveur ssh. Dans notre cas, permettra de se passer de login et de mot de passe pour l'authentification à la remote. \end{block} \begin{block}{Comment ça marche ?} \begin{itemize} \item Algorithme RSA; \item Une clé publique destinée à être partagée au monde; \item Une clé privée permettant de certifier que l'on est la personne à qui appartient la clé publique. \end{itemize} \end{block} \end{frame} \begin{frame}[fragile] \frametitle{Générer sa paire de clés} \framesubtitle{Comment faire ?} \begin{beamercolorbox}[rounded=true,shadow=true]{terminal} \begin{Verbatim} $ ssh-keygen -b 4096 \Pause Generating public/private rsa key pair. Enter file in which to save the key (/home/remy/.ssh/id_rsa):\Pause Enter passphrase (empty for no passphrase):\Pause Enter same passphrase again:\Pause The key fingerprint is: SHA256:B8IbOIXrMqGEgYOKhqnbelKKbzN35XqlVK/IfUnGQJQ remy@remy-HP-ZBook-15-G2 The key's randomart image is: +---[RSA 4096]----+ |o .. ... | |= .+ E | |=+ o.+ .. | |*o. .. + .o | |+. o . S..+ | |o + . o.. = | |.= o = = + . | |= * . . * o o | |.*.+ ..o . | +----[SHA256]-----+ \end{Verbatim} \end{beamercolorbox} \end{frame} \begin{frame}[fragile] \frametitle{Utilisation} \begin{itemize} \item Ajout de la clé publique sur GitLab \end{itemize} Pour indiquer à git qu'il faut utilisaer \verb+ssh+ plutôt que \verb+https+ pour se connecter au remote, on utilise une uri différente lors du \verb+clone+ Par exemple, pour récupérer le repo de la formation niveau 1, on tapera \verb+git clone git@gitlab.utc.fr:picasoft/formations/A18/git-v1+ \end{frame} \section{Les branches} \subsection{Principe} \subsection{Application} \subsection{Fusion de deux branches} \subsection{Gestion des conflits} \subsection{Travail collaboratif} \section{Introduction à git flow} \begin{frame}[fragile] \frametitle{Pourquoi Git flow ?} Problématique de collaboration sur des gros projets : \begin{itemize} \item Avoir une brache \verb+master+ stable à tout moment; \item Créer une brache par nouvelle fonctionnalité : \begin{itemize} \item Pour une organisation plus claire; \item Pour développer plusieurs fonctionnalités en parallèle. \end{itemize} \item Avoir une branche de développement pour merge les fonctionnalités finies, mais qui n'est pas une branche stable. \end{itemize} \end{frame} \end{document}