diff --git a/README.md b/README.md index 9df9e53f920bc28e61517cd03d30ac68f938b46e..2941ac15d06caa23559a58dbbb8f46812f7257fa 100644 --- a/README.md +++ b/README.md @@ -15,4 +15,8 @@ La présentation au format PDF est disponible [ici](https://gitlab.utc.fr/picaso ## Contribuer ! Créez une branche, et faites une merge request ! Faites la relire par un tiers qui la valide et la merge. -N'oubliez pas d'ajouter votre nom dans la license et dans les auteurs de `main.tex` \ No newline at end of file +N'oubliez pas d'ajouter votre nom dans la license et dans les auteurs de `main.tex` + +## Plan + +Le plan est disponible [ici](docs/plan.md) \ No newline at end of file diff --git a/docs/plan.md b/docs/plan.md new file mode 100644 index 0000000000000000000000000000000000000000..eb920d38e5054a734710797c1600ce6f232c2546 --- /dev/null +++ b/docs/plan.md @@ -0,0 +1,110 @@ +# Plan de la présentation + +## À propos + +La formation sur git durera une journée (~6/7 heures). Elle abordera à la fois l'utilisation de Git (local et remotes) mais aussi les méthodes de gestion de travail propres à GitLab. + +**Comment lire ce plan ?** +Les sections sont numérotés en niveau 1. Les sous-sections en niveau 2. Une indentation sous la section/sous section est un titre, deux un sous-titre. Un niveau sans "fils" est une frame. + +## Plan + +1. Introduction + + * Qu'est ce que git ? + * Pourquoi la gestion de version ? + * Différents logiciels de gestion de version + * Petite histoire de Git + *(transition ?)* + +2. Versionner son travail + + 1. Configuration et initialisation + + * Création d'un dépôt Git + * Configuration locale / configuration globale + 2. Gestion théorique + * Working Directory vs. Staging Area vs. Repository + * Explications + * Schéma + * Fonctionnement de Git + 3. Gestion linéaire en pratique + * Créer des versions + * Working directory <-> staging area + * Staging area <-> repository + * Dissection d'un commit + * Visualiser les différences + * Git log + * Git diff + * Git show + +3. Utiliser les versions + 1. Le HEAD + * Qu'est-ce que le HEAD ? + 2. Marquer une version + * Git tag + 3. Mettre de côté ses modifications + * Enregistrer les modifications locales + * Restaurer les modifications locales + 4. Parcourir l'historique + * Changer de version + * Revenir au dernier commmit + * Annuler des changements + 5. Annuler des commits + * Sans modification d'historique + * Avec modification d'historique + * Git reset + * Git commit --amend + +4. Utilisation des remotes + 1. Présentation + * Le concept des remotes + * Exemples de remotes + * Création d'un dépôt distant + 2. Récupérer du travail existant + * Cloner un dépôt existant + * Tirer des changements + 3. Envoyer son travail + * Pousser des commits + +5. Gestion non linéaire + 1. Explications théoriques + * Principe de gestion non linéaire + * Création d'une divergence + * Comment créer une divergence + * Explications + * Illustrations / Exemple + * Fusion + 2. Application à Git + * Gestion des branches + * Changer de branche + * Visualisation + 3. Fusionner des branches + * Le merge + * Le rebase + * Avertissement + * Comparaison avec le merge + * Application simple + * Rebase interactif + * Le cherry-pick + +6. Résolution de conflits + 1. Les conflits + * Qu'est-ce qu'un conflit ? + * Exemple de situation conflictuelle + * Comment se présente un conflit ? + * Concrètement, quand peut-on avoir un conflit ? + * Merge + * Rebase + * Pull + 2. Résoudre un conflit + * En théorie + * Application + 3. Historiques divergents + * Quand parle-t-on de divergence ? + * Comment diverge-t-on ? + * Résoudre des divergences ? + +7. Travail collaboratif avec Git et GitLab + 1. Présentation de git flow + 2. Présentation de GitLab diff --git a/main.tex b/main.tex index 65f9da149fd3b9db94a7b636d27b4edbd09fd811..a3466dff0f2aa9a33533447cb39fbab7f38edbf6 100644 --- a/main.tex +++ b/main.tex @@ -1,6 +1,6 @@ \documentclass[usepdftitle=false]{beamer} -\usepackage[frenchb]{babel} +\usepackage[french]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{graphicx} @@ -60,8 +60,30 @@ pdfproducer={Latex}, \titlepage \end{frame} -\section{Introduction} +\begin{frame} + \frametitle{Table des matières} + \tableofcontents[hidesubsections] +\end{frame} +\section{Introduction} \input{./src/tex/introduction.tex} +\section{Versionner son travail} +\input{./src/tex/versionner_travail.tex} + +\section{Utiliser les versions} +\input{./src/tex/utiliser_versions.tex} + +\section{Utilisation des remotes} +\input{./src/tex/utilisation_remotes.tex} + +\section{Gestion non linéaire} +\input{./src/tex/gestion_non_lineaire.tex} + +\section{Résolution des conflits} +\input{./src/tex/resolution_conflits.tex} + +\section{Travail collaboratif avec Git et GitLab} +\input{./src/tex/tavail_collaboratif.tex} + \end{document} diff --git a/src/tex/gestion_non_lineaire.tex b/src/tex/gestion_non_lineaire.tex new file mode 100644 index 0000000000000000000000000000000000000000..0d6e4bd6b89c7549c7e170adc0cdebc5575c56c0 --- /dev/null +++ b/src/tex/gestion_non_lineaire.tex @@ -0,0 +1,8 @@ +\subsection{Explications théoriques} +\input{src/tex/gestion_non_lineaire/explications_theoriques.tex} + +\subsection{Application à Git} +\input{src/tex/gestion_non_lineaire/application_git.tex} + +\subsection{Fusionner des branches} +\input{src/tex/gestion_non_lineaire/fusionner_branches.tex} diff --git a/src/tex/gestion_non_lineaire/application_git.tex b/src/tex/gestion_non_lineaire/application_git.tex new file mode 100644 index 0000000000000000000000000000000000000000..90165d412bcd0d2926ef703907e57a449fb0e6d6 --- /dev/null +++ b/src/tex/gestion_non_lineaire/application_git.tex @@ -0,0 +1,11 @@ +\begin{frame} + \frametitle{Gestion des branches} +\end{frame} + +\begin{frame} + \frametitle{Changer de branche} +\end{frame} + +\begin{frame} + \frametitle{Visualisation} +\end{frame} diff --git a/src/tex/gestion_non_lineaire/explications_theoriques.tex b/src/tex/gestion_non_lineaire/explications_theoriques.tex new file mode 100644 index 0000000000000000000000000000000000000000..85c26503f7cbeda4e34b49ee2f661b31d8ce1081 --- /dev/null +++ b/src/tex/gestion_non_lineaire/explications_theoriques.tex @@ -0,0 +1,22 @@ +\begin{frame} + \frametitle{Principe de la gestion non linéaire} +\end{frame} + +\begin{frame} + \frametitle{Création d'une divergence} + \framesubtitle{Comment créer une divergence} +\end{frame} + +\begin{frame} + \frametitle{Création d'une divergence} + \framesubtitle{Explications} +\end{frame} + +\begin{frame} + \frametitle{Création d'une divergence} + \framesubtitle{Illustrations / exemple} +\end{frame} + +\begin{frame} + \frametitle{Fusion !} +\end{frame} diff --git a/src/tex/gestion_non_lineaire/fusionner_branches.tex b/src/tex/gestion_non_lineaire/fusionner_branches.tex new file mode 100644 index 0000000000000000000000000000000000000000..a5461e8ba8ea3a3b330a2019af25127335cbd312 --- /dev/null +++ b/src/tex/gestion_non_lineaire/fusionner_branches.tex @@ -0,0 +1,27 @@ +\begin{frame} + \frametitle{Le merge} +\end{frame} + +\begin{frame} + \frametitle{Le rebase} + \framesubtitle{Avertissement} +\end{frame} + +\begin{frame} + \frametitle{Le rebase} + \framesubtitle{Comparaison avec le merge} +\end{frame} + +\begin{frame} + \frametitle{Le rebase} + \framesubtitle{Application simple} +\end{frame} + +\begin{frame} + \frametitle{Le rebase} + \framesubtitle{Rebase interactif} +\end{frame} + +\begin{frame} + \frametitle{Le cherry-pick} +\end{frame} diff --git a/src/tex/resolution_conflits.tex b/src/tex/resolution_conflits.tex new file mode 100644 index 0000000000000000000000000000000000000000..8f03942245047262738d5058e9606628a7e6a8fa --- /dev/null +++ b/src/tex/resolution_conflits.tex @@ -0,0 +1,8 @@ +\subsection{Les conflits} +\input{src/tex/resolution_conflits/les_conflits.tex} + +\subsection{Résoudre un conflit} +\input{src/tex/resolution_conflits/resoudre_conflit.tex} + +\subsection{Historiques divergents} +\input{src/tex/resolution_conflits/historiques_divergents.tex} diff --git a/src/tex/resolution_conflits/historiques_divergents.tex b/src/tex/resolution_conflits/historiques_divergents.tex new file mode 100644 index 0000000000000000000000000000000000000000..13820dd002ba2088a578cce39ee1228611ec6035 --- /dev/null +++ b/src/tex/resolution_conflits/historiques_divergents.tex @@ -0,0 +1,11 @@ +\begin{frame} + \frametitle{Quand parler de divergence ?} +\end{frame} + +\begin{frame} + \frametitle{Comment diverger ?} +\end{frame} + +\begin{frame} + \frametitle{Résoudre des divergences ?} +\end{frame} diff --git a/src/tex/resolution_conflits/les_conflits.tex b/src/tex/resolution_conflits/les_conflits.tex new file mode 100644 index 0000000000000000000000000000000000000000..cf69d3ed1dbed645a6fbaccd68da320544ec91a8 --- /dev/null +++ b/src/tex/resolution_conflits/les_conflits.tex @@ -0,0 +1,26 @@ +\begin{frame} + \frametitle{Qu'est-ce qu'un conflit ?} +\end{frame} + +\begin{frame} + \frametitle{Exemple de situation conflictuelle} +\end{frame} + +\begin{frame} + \frametitle{Comment se présente un conflit ?} +\end{frame} + +\begin{frame} + \frametitle{Quand peut-on avoir un conflit ?} + \framesubtitle{Merge} +\end{frame} + +\begin{frame} + \frametitle{Quand peut-on avoir un conflit ?} + \framesubtitle{Rebase} +\end{frame} + +\begin{frame} + \frametitle{Quand peut-on avoir un conflit ?} + \framesubtitle{Pull} +\end{frame} diff --git a/src/tex/resolution_conflits/resoudre_conflit.tex b/src/tex/resolution_conflits/resoudre_conflit.tex new file mode 100644 index 0000000000000000000000000000000000000000..646a87ede4f0875c3982c4bd5a0ea93189e4d912 --- /dev/null +++ b/src/tex/resolution_conflits/resoudre_conflit.tex @@ -0,0 +1,7 @@ +\begin{frame} + \frametitle{En théorie} +\end{frame} + +\begin{frame} + \frametitle{Application} +\end{frame} diff --git a/src/tex/tavail_collaboratif.tex b/src/tex/tavail_collaboratif.tex new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/tex/utilisation_remotes.tex b/src/tex/utilisation_remotes.tex new file mode 100644 index 0000000000000000000000000000000000000000..f1ca5c92e3ead0f520cca35d4408a401638cda9b --- /dev/null +++ b/src/tex/utilisation_remotes.tex @@ -0,0 +1,8 @@ +\subsection{Présentation} +\input{./src/tex/utilisation_remotes/presentation.tex} + +\subsection{Récupérer du travail existant} +\input{./src/tex/utilisation_remotes/recuperer_travail.tex} + +\subsection{Envoyer son travail} +\input{./src/tex/utilisation_remotes/envoyer_travail.tex} diff --git a/src/tex/utilisation_remotes/envoyer_travail.tex b/src/tex/utilisation_remotes/envoyer_travail.tex new file mode 100644 index 0000000000000000000000000000000000000000..29b4927448d51f73360f2051906604f6e7bc2e7b --- /dev/null +++ b/src/tex/utilisation_remotes/envoyer_travail.tex @@ -0,0 +1,3 @@ +\begin{frame} + \frametitle{Pousser des commits} +\end{frame} diff --git a/src/tex/utilisation_remotes/presentation.tex b/src/tex/utilisation_remotes/presentation.tex new file mode 100644 index 0000000000000000000000000000000000000000..11417823038e5daaa18b32ddeb98a9eace714766 --- /dev/null +++ b/src/tex/utilisation_remotes/presentation.tex @@ -0,0 +1,11 @@ +\begin{frame} + \frametitle{Le concept des remotes} +\end{frame} + +\begin{frame} + \frametitle{Exemples de remotes} +\end{frame} + +\begin{frame} + \frametitle{Création d'un dépôt distant} +\end{frame} diff --git a/src/tex/utilisation_remotes/recuperer_travail.tex b/src/tex/utilisation_remotes/recuperer_travail.tex new file mode 100644 index 0000000000000000000000000000000000000000..205b69ce79ba7c526c59ef5145b7f6a3e50ea339 --- /dev/null +++ b/src/tex/utilisation_remotes/recuperer_travail.tex @@ -0,0 +1,7 @@ +\begin{frame} + \frametitle{Cloner un dépôt distant} +\end{frame} + +\begin{frame} + \frametitle{Tirer des changments} +\end{frame} diff --git a/src/tex/utiliser_versions.tex b/src/tex/utiliser_versions.tex new file mode 100644 index 0000000000000000000000000000000000000000..8e386d0da3dded846389b7a8c1377a5a8604c372 --- /dev/null +++ b/src/tex/utiliser_versions.tex @@ -0,0 +1,14 @@ +\subsection{Le HEAD} +\input{src/tex/utiliser_versions/head.tex} + +\subsection{Marquer une version} +\input{./src/tex/utiliser_versions/marquer_version.tex} + +\subsection{Mettre de côté ses modifications} +\input{./src/tex/utiliser_versions/mettre_de_cote.tex} + +\subsection{Parcourir l'historique} +\input{./src/tex/utiliser_versions/parcourir_historique.tex} + +\subsection{Annuler des commits} +\input{./src/tex/utiliser_versions/annuler_commits.tex} diff --git a/src/tex/utiliser_versions/annuler_commits.tex b/src/tex/utiliser_versions/annuler_commits.tex new file mode 100644 index 0000000000000000000000000000000000000000..399f4e8f63f84eee8d477dd1176845ad62692667 --- /dev/null +++ b/src/tex/utiliser_versions/annuler_commits.tex @@ -0,0 +1,13 @@ +\begin{frame} + \frametitle{Sans modification d'historique} +\end{frame} + +\begin{frame} + \frametitle{Avec modification d'historique} + \framesubtitle{Git reset} +\end{frame} + +\begin{frame} + \frametitle{Avec modification d'historique} + \framesubtitle{Git commit --amend} +\end{frame} diff --git a/src/tex/utiliser_versions/head.tex b/src/tex/utiliser_versions/head.tex new file mode 100644 index 0000000000000000000000000000000000000000..12e95ddd5a424e55241b43510f8f61f68162fda5 --- /dev/null +++ b/src/tex/utiliser_versions/head.tex @@ -0,0 +1,3 @@ +\begin{frame} + \frametitle{Qu'est-ce que le HEAD?} +\end{frame} diff --git a/src/tex/utiliser_versions/marquer_version.tex b/src/tex/utiliser_versions/marquer_version.tex new file mode 100644 index 0000000000000000000000000000000000000000..41b35bea8546ca849a602aaebbe338a6b1b94f66 --- /dev/null +++ b/src/tex/utiliser_versions/marquer_version.tex @@ -0,0 +1,3 @@ +\begin{frame} + \frametitle{Git tag} +\end{frame} diff --git a/src/tex/utiliser_versions/mettre_de_cote.tex b/src/tex/utiliser_versions/mettre_de_cote.tex new file mode 100644 index 0000000000000000000000000000000000000000..8755c88e4a2355d26fb8bd8725997ba4b50d3968 --- /dev/null +++ b/src/tex/utiliser_versions/mettre_de_cote.tex @@ -0,0 +1,7 @@ +\begin{frame} + \frametitle{Enregistrer les modifications locales} +\end{frame} + +\begin{frame} + \frametitle{Restaurer les modifications locales} +\end{frame} diff --git a/src/tex/utiliser_versions/parcourir_historique.tex b/src/tex/utiliser_versions/parcourir_historique.tex new file mode 100644 index 0000000000000000000000000000000000000000..6280f6cca08044604a364ea2f864b72d41a2c23b --- /dev/null +++ b/src/tex/utiliser_versions/parcourir_historique.tex @@ -0,0 +1,11 @@ +\begin{frame} + \frametitle{Changer de version} +\end{frame} + +\begin{frame} + \frametitle{Revenir au dernier commit} +\end{frame} + +\begin{frame} + \frametitle{Annuler des changements} +\end{frame} diff --git a/src/tex/versionner_travail.tex b/src/tex/versionner_travail.tex new file mode 100644 index 0000000000000000000000000000000000000000..96d79d3f562577ed78e31ae13c2d9e9a12af00a5 --- /dev/null +++ b/src/tex/versionner_travail.tex @@ -0,0 +1,8 @@ +\subsection{Configuration et initialisation} +\input{./src/tex/versionner_travail/configuration_initialisation.tex} + +\subsection{Gestion théorique} +\input{./src/tex/versionner_travail/gestion_theorique.tex} + +\subsection{Gestion linéaire en pratique} +\input{./src/tex/versionner_travail/gestion_lineaire_pratique.tex} diff --git a/src/tex/versionner_travail/configuration_initialisation.tex b/src/tex/versionner_travail/configuration_initialisation.tex new file mode 100644 index 0000000000000000000000000000000000000000..5188c48c13b39ab153df2f0f69ea369813af19c5 --- /dev/null +++ b/src/tex/versionner_travail/configuration_initialisation.tex @@ -0,0 +1,7 @@ +\begin{frame} + \frametitle{Création d'un dépôt git} +\end{frame} + +\begin{frame} + \frametitle{Configuration locale / configuration globale} +\end{frame} diff --git a/src/tex/versionner_travail/gestion_lineaire_pratique.tex b/src/tex/versionner_travail/gestion_lineaire_pratique.tex new file mode 100644 index 0000000000000000000000000000000000000000..23dd916fbc5f468293ed91f3893788e1c7650b34 --- /dev/null +++ b/src/tex/versionner_travail/gestion_lineaire_pratique.tex @@ -0,0 +1,28 @@ +\begin{frame} + \frametitle{Créer des versions} + \framesubtitle{Working Directory <-> Staging Area} +\end{frame} + +\begin{frame} + \frametitle{Créer des versions} + \framesubtitle{Staging Area <-> Repository} +\end{frame} + +\begin{frame} + \frametitle{Dissection d'un commit} +\end{frame} + +\begin{frame} + \frametitle{Visualiser des différences} + \framesubtitle{Git log} +\end{frame} + +\begin{frame} + \frametitle{Visualiser des différences} + \framesubtitle{Git diff} +\end{frame} + +\begin{frame} + \frametitle{Visualiser des différences} + \framesubtitle{Git show} +\end{frame} diff --git a/src/tex/versionner_travail/gestion_theorique.tex b/src/tex/versionner_travail/gestion_theorique.tex new file mode 100644 index 0000000000000000000000000000000000000000..6abb21a2ca43d1ede205bdd4fea1c769bb473c90 --- /dev/null +++ b/src/tex/versionner_travail/gestion_theorique.tex @@ -0,0 +1,13 @@ +\begin{frame} + \frametitle{Working Directory vs. Staging area vs. Repository} + \framesubtitle{Explications} +\end{frame} + +\begin{frame} + \frametitle{Working Directory vs. Staging area vs. Repository} + \framesubtitle{Schéma} +\end{frame} + +\begin{frame} + \frametitle{Fonctionnement de Git} +\end{frame}