Formation git
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
fichier content/outils/scm/git/commandes.tex à éditer
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
@ -1,4 +1,14 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{add}
|
||||
\begin{description}
|
||||
\item[\commande{git add}] Ajouter le contenu d'un fichier à l'index.
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_add}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{-u}] ajout des modifications des fichiers déjà connus de git
|
||||
\item[\commande{-i}] ajout interactif
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,7 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{blame}
|
||||
\begin{description}
|
||||
\item[\commande{git blame}] Afficher l'auteur et la référence de la dernière modification pour chaque ligne d'un fichier
|
||||
\end{description}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,14 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{branch}
|
||||
\begin{description}
|
||||
\item[git branch] Gérer les branches
|
||||
\end{description}
|
||||
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{--list}] Lister les branches (\commande{-a} les branches locales et distantes, \commande{-r} les branches distantes uniquement)
|
||||
\item[\commande{-d}] Supprimer une branche
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,14 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{checkout}
|
||||
\begin{description}
|
||||
\item[\commande{git checkout}] Synchroniser le répertoire de travail avec une version
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_checkout}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{-b}] Créer une nouvelle branche et déplacer HEAD dessus
|
||||
\item[\commande{--ours --theirs}] Conserver des modifications explicitement
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,13 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{cherry-pick}
|
||||
\begin{description}
|
||||
\item[\commande{git cherry-pick}] Appliquer les changements introduits dans un commit donné
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_cherry-pick}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{--abort}] Interrompre le processus
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,7 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{cherry}
|
||||
\begin{description}
|
||||
\item[\commande{git cherry}] Trouver les commit qui ne sont pas encore appliqués dans le dépôt distant
|
||||
\end{description}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,14 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{clean}
|
||||
\begin{description}
|
||||
\item[\commande{git clean}] Supprime les fichiers non suivis du répertoire de travail
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_clean}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{-xdf}] Combinaison pour supprimer du répertoire de travail les dossiers et fichiers non suivis
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,8 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{clone}
|
||||
\begin{description}
|
||||
\item[\commande{git clone <url du dépôt>}] Récupérer un dépôt git depuis une source distante
|
||||
\end{description}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,15 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{commit}
|
||||
\begin{description}
|
||||
\item[\commande{git commit}] Créer un commit à partir du contenu de l'index
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_commit}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{-a}] Court-circuiter l'index en intégrant au commit les modifications des fichiers suivis dans le répertoire de travail
|
||||
\item[\commande{--amend}] Modifier le dernier commit
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,8 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{diff}
|
||||
\begin{description}
|
||||
\item[\commande{git diff}] Afficher la différence entre deux états (entre le répertoire de travail ou l'index et la branche ou entre
|
||||
\end{description}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,13 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{checkout}
|
||||
\begin{description}
|
||||
\item[git fetch] Mettre à jour la copie locale d'un dépôt distant
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_fetch}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[-all] Mettre à jour les copies locales de tous les dépôts distants configurés
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,8 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{init}
|
||||
\begin{description}
|
||||
\item[\commande{git init}] Convertir le dossier courant en dépôt git
|
||||
\end{description}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,8 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{log}
|
||||
\begin{description}
|
||||
\item[\commande{git log}] Afficher une liste de commits
|
||||
\end{description}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,14 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{merge}
|
||||
\begin{description}
|
||||
\item[\commande{git merge}] Intégrer les commits d'une branche à une autre
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_merge}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{--abort}] Pour faire machine arrière lors d'un merge manuel
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,14 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{pull}
|
||||
\begin{description}
|
||||
\item[\commande{git pull}] Synchroniser une branche locale avec la branche distante
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_pull}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{--rebase}] Choisir la stratégie rebase pour incorporer les changements (équivalent à la succession des commandes \commande{fetch} et \commande{rebase}
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,15 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{push}
|
||||
\begin{description}
|
||||
\item[\commande{git push}] Synchroniser une branche distante avec une branche locale
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_push}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{--tags}] Pousser les tags locaux sur le dépôt distant
|
||||
\item[\commande{--all}] Pousser toutes les branches
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,14 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{rebase}
|
||||
\begin{description}
|
||||
\item[\commande{git rebase}] Rejouer les modifications après mise à jour de la branche
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_rebase}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{-i}] Réordonner les modifications manuellement
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,14 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{reset}
|
||||
\begin{description}
|
||||
\item[\commande{git reset}] Revenir à une version antérieure
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_reset}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{--hard}] Écraser le contenu du répertoire de travail et de l'index
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,14 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{revert}
|
||||
\begin{description}
|
||||
\item[\commande{git revert}] Créer le commit annulant un autre commit
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_commande_revert}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{--abort}] Interrompre le traitement
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,8 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{show}
|
||||
\begin{description}
|
||||
\item[\commande{git show}] Afficher la description d'un commit
|
||||
\end{description}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,8 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{status}
|
||||
\begin{description}
|
||||
\item[\commande{git status}] Afficher le statut du répertoire de travail, et de l'index relativement à la branche
|
||||
\end{description}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,15 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Commandes git}
|
||||
\framesubtitle{tag}
|
||||
\begin{description}
|
||||
\item[\commande{git tag}] Gérer les étiquettes attachées à un commit
|
||||
\end{description}
|
||||
\begin{exampleblock}{Options à retenir}
|
||||
\begin{description}
|
||||
\item[\commande{-l}] Lister les étiquettes (éventuellement correpondant à un motif)
|
||||
\item[\commande{-a}] Annoter l'étiquette
|
||||
\item[\commande{-s}] Signer l'étiquette
|
||||
\end{description}
|
||||
\end{exampleblock}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
@ -0,0 +1,33 @@
|
||||
\begin{frame}
|
||||
\frametitle{Ergonomie}
|
||||
\framesubtitle{alias}
|
||||
Les alias sont des raccourcis gérés pas git.
|
||||
|
||||
\commande{git config alias.<nom de l'alias> "<commande>"}
|
||||
|
||||
\begin{exampleblock}{Nature des commandes}
|
||||
Les commandes peuvent aussi bien être des options et sous-commandes de git que des commandes externes accessibles au shell.
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle {Ergonomie}
|
||||
\framesubtitle{Exemples d'alias}
|
||||
\begin{minted}[fontsize=\tiny]{ini}
|
||||
[alias]
|
||||
co = checkout
|
||||
st = status
|
||||
fe = fetch
|
||||
lo = log --oneline
|
||||
re = reset --hard HEAD~1
|
||||
br = branch
|
||||
mnf = merge --no-ff
|
||||
sw = checkout @{-1}
|
||||
lu = log ..@{upstream}
|
||||
luo = log --oneline ..@{upstream}
|
||||
ul=log @{upstream}..HEAD
|
||||
ulo=log --oneline @{upstream}..HEAD
|
||||
cslt = !git describe --long --first-parent | awk -F'/' '{print $NF}' | awk -F'-' '{print $(NF-1)}'
|
||||
clf = !git lo --no-merges $(git lo -1 --pretty=format:"%h" debian/changelog)..
|
||||
\end{minted}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,10 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Ergonomie}
|
||||
\framesubtitle{Interface}
|
||||
\begin{itemize}
|
||||
\item \commande{git config --global core.editor "vim"}
|
||||
\item \commande{git config --global core.pager "less"}
|
||||
\item \commande{git config --global color.ui auto}
|
||||
\end{itemize}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
|
47
content/outils/scm/git/configuration/hooks.tex
Normal file
47
content/outils/scm/git/configuration/hooks.tex
Normal file
@ -0,0 +1,47 @@
|
||||
\begin{frame}
|
||||
\frametitle{Ergonomie}
|
||||
\framesubtitle{Hooks}
|
||||
Les hooks sont des actions déclenchées par des évènements concernant le dépôt git.
|
||||
\begin{exampleblock}{}
|
||||
Les hooks sont des scripts exécutables (pas de langage imposé) posés dans le dossier .git/hooks.
|
||||
\end{exampleblock}
|
||||
|
||||
\end{frame}
|
||||
\begin{frame}
|
||||
\frametitle{Ergonomie}
|
||||
\framesubtitle{Hooks pour le client}
|
||||
\begin{columns}
|
||||
\begin{column}{0.5\textwidth}
|
||||
\begin{itemize}
|
||||
\item pre-commit
|
||||
\item prepare-commit-msg
|
||||
\item commit-msg
|
||||
\item post-commit
|
||||
|
||||
\item applypatch-msg
|
||||
\item preapply-patch
|
||||
\item postapply-patch
|
||||
\end{itemize}
|
||||
|
||||
\end{column}
|
||||
\begin{column}{0.5\textwidth}
|
||||
\begin{itemize}
|
||||
\item pre-rebase
|
||||
\item post-rewrite
|
||||
\item post-checkout
|
||||
\item post-merge
|
||||
\item pre-push
|
||||
\end{itemize}
|
||||
\end{column}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Ergonomie}
|
||||
\framesubtitle{Hooks pour le serveur}
|
||||
\begin{itemize}
|
||||
\item pre-receive
|
||||
\item update
|
||||
\item post-receive
|
||||
\end{itemize}
|
||||
\end{frame}
|
16
content/outils/scm/git/configuration/shell.tex
Normal file
16
content/outils/scm/git/configuration/shell.tex
Normal file
@ -0,0 +1,16 @@
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Ergonomie}
|
||||
\framesubtitle{bash}
|
||||
\begin{minted}{bash}
|
||||
source ~/.git-prompt.sh
|
||||
GIT_PS1_SHOWDIRTYSTATE=1
|
||||
GIT_PS1_SHOWSTASHSTATE=1
|
||||
GIT_PS1_SHOWUNTRACKEDFILES=1
|
||||
GIT_PS1_SHOWUPSTREAM="auto"
|
||||
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
|
||||
\end{minted}
|
||||
\begin{exampleblock}{git-prompt}
|
||||
git-prompt.sh est un script définissant la fonction \_\_git\_ps1 permettant d'afficher des informations pertinentes sur l'état du dépôt git dans l'invite de commande.
|
||||
\end{exampleblock}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
@ -3,7 +3,7 @@
|
||||
\framesubtitle{Identifier l'utilisateur}
|
||||
git associe à chaque commit des informations sur la personne ayant commité et sur la personne ayant mergé le commit.
|
||||
\begin{itemize}
|
||||
\item git config --global user.name "<nom d'utilisateur>"
|
||||
\item git config --global user.email "<courriel>"
|
||||
\item \commande{git config --global user.name "<nom d'utilisateur>"}
|
||||
\item \commande{git config --global user.email "<courriel>"}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -1,8 +1,10 @@
|
||||
\begin{frame}
|
||||
\frametitle{exercice}
|
||||
\frametitle{Exercices}
|
||||
\framesubtitle{Configuration globale de git}
|
||||
Les paramètres de l'application git peuvent être globaux où propres à un dépôt.
|
||||
Les paramètres de l'application git peuvent être globaux ou propres à un dépôt.
|
||||
|
||||
L'ergonomie, l'identité, les alias sont souvent les mêmes pour tous les dépôts.
|
||||
La première étape consiste généralement à renseigner ces paramètres.
|
||||
|
||||
Le premier exercice consiste donc à renseigner un minimum de ces variables globales.
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,38 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Mise en place}
|
||||
\framesubtitle{Identité de l'utilisateur}
|
||||
\begin{itemize}
|
||||
\item \commande{git config --global user.name "<nom de l'utilisateur>"}
|
||||
\item \commande{git config --global user.email "<courriel de l'utilisateur>"}
|
||||
\end{itemize}
|
||||
\begin{exampleblock}{En cas d'oubli}
|
||||
\commande{git} émet un avertissement lors du premier commit si ces variables ne sont pas renseignées.
|
||||
Il est possible de corriger cet oubli facilement si les commits n'ont pas encore été partagés.
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Mise en place}
|
||||
\framesubtitle{Ergonomie}
|
||||
\begin{itemize}
|
||||
\item \commande{git config --global color.ui auto}
|
||||
\item \commande{git config --global core.editor "<éditeur de texte à utiliser>"}
|
||||
\item \commande{git config --global core.pager "<pager>"}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Mise en place}
|
||||
\framesubtitle{Ergonomie (GNU/Linux)}
|
||||
\begin{minted}{bash}
|
||||
source ~/.git-prompt.sh
|
||||
GIT_PS1_SHOWDIRTYSTATE=1
|
||||
GIT_PS1_SHOWSTASHSTATE=1
|
||||
GIT_PS1_SHOWUNTRACKEDFILES=1
|
||||
GIT_PS1_SHOWUPSTREAM="auto"
|
||||
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
|
||||
\end{minted}
|
||||
\begin{exampleblock}{git-prompt}
|
||||
git-prompt.sh est un script définissant la fonction \_\_git\_ps1 permettant d'afficher des informations pertinentes sur l'état du dépôt git dans l'invite de commande.
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,13 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Exercices}
|
||||
\framesubtitle{Initialiser un dépôt}
|
||||
Un dépôt git peut être amorcé de différentes façons selon le contexte.
|
||||
\begin{itemize}
|
||||
\item le dépôt existe déjà en \emph{distant} :
|
||||
\begin{itemize}
|
||||
\item le dépôt distant est déjà au format git ;
|
||||
\item le dépôt distant est géré par un autre scm ;
|
||||
\end{itemize}
|
||||
\item un répertoire local doit être converti en dépôt git ;
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,21 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
\frametitle{Initialiser le dépôt}
|
||||
\framesubtitle{Récupérer le dépôt git distant en ssh}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\end{frame}
|
||||
\begin{frame}
|
||||
\frametitle{Initialiser le dépôt}
|
||||
\framesubtitle{Récupérer le dépôt git distant en https}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\begin{frame}
|
||||
\frametitle{Initialiser le dépôt}
|
||||
\framesubtitle{Récupérer le dépôt CVS distant}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Initialiser le dépôt}
|
||||
\framesubtitle{Convertir le dossier local en dépôt git}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,9 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Exercice}
|
||||
\framesubtitle{Avoir des dépôts distants en référence}
|
||||
Les dépôts distants sont un aspect important du fonctionnement d'un SCM décentralisé.
|
||||
|
||||
git permet d'associer plusieurs dépôts distants à un dépôt local et de renseigner à quelle branche de quel dépôt distant une branche locale doit se référer.
|
||||
|
||||
Le présent exercice aborde la mise en place de tels liens entre branches locales et branches distantes.
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,31 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Associer les dépôts distants}
|
||||
\framesubtitle{Ajouter un dépôt distant}
|
||||
\commande{git remote add <nom> <protocole>://[<utilisateur>@]<adresse>[:port]/<chemin>}
|
||||
|
||||
Exemples :
|
||||
\begin{itemize}
|
||||
\item \commande{git remote add formation ssh://gogs@localhost/bbohard.git}
|
||||
\item \commande{git remote add formation https://gogs@localhost/bbohard.git}
|
||||
\end{itemize}
|
||||
\begin{exampleblock}{Vérification}
|
||||
Les dépôts distants configurés peuvent être listés avec :
|
||||
\begin{itemize}
|
||||
\item \commande{git remote} pour la version sobre ou
|
||||
\item \commande{git remote -v} pour plus de détails.
|
||||
\end{itemize}
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Associer les dépôts distants}
|
||||
\framesubtitle{Observer une branche distante}
|
||||
Pour une branche distante existante :
|
||||
\begin{itemize}
|
||||
\item \commande{git branch --set-upstream-to=<nom\_dépôt\_distant>/<branche\_distante>}
|
||||
\end{itemize}
|
||||
Pour une branche distante inexistante :
|
||||
\begin{itemize}
|
||||
\item \commande{git push --set-upstream <nom\_dépôt\_distant> <branche\_locale>}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,7 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Exercice}
|
||||
\framesubtitle{Premier commit}
|
||||
Le premier commit est toujours le plus facile. Pas de conflit à attendre, pas stress…
|
||||
|
||||
Cet exercice permet de décortiquer le fonctionnement des \emph{arbres} de git avec l'ajout d'un simple fichier dans un dossier.
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,133 @@
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Premier pas}
|
||||
\framesubtitle{Dépôt vide}
|
||||
Au démarrage, est un dépôt vide :
|
||||
|
||||
\begin{minted}[fontsize=\tiny]{bash}
|
||||
Sur la branche master
|
||||
|
||||
Validation initiale
|
||||
|
||||
rien à valider (créez/copiez des fichiers et utilisez "git add" pour les suivre)
|
||||
\end{minted}
|
||||
\end{frame}
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Premier pas}
|
||||
\framesubtitle{Et pourtant…}
|
||||
\begin{columns}
|
||||
\begin{column}{0.5\textwidth}
|
||||
L'initialisation consiste en la création du dossier .git :
|
||||
\end{column}
|
||||
\begin{column}{0.5\textwidth}
|
||||
\begin{minted}[fontsize=\tiny]{bash}
|
||||
.
|
||||
└── .git
|
||||
├── branches
|
||||
├── config
|
||||
├── description
|
||||
├── HEAD
|
||||
├── hooks
|
||||
│ ├── applypatch-msg.sample
|
||||
│ ├── commit-msg.sample
|
||||
│ ├── post-update.sample
|
||||
│ ├── pre-applypatch.sample
|
||||
│ ├── pre-commit.sample
|
||||
│ ├── prepare-commit-msg.sample
|
||||
│ ├── pre-push.sample
|
||||
│ ├── pre-rebase.sample
|
||||
│ └── update.sample
|
||||
├── info
|
||||
│ └── exclude
|
||||
├── objects
|
||||
│ ├── info
|
||||
│ └── pack
|
||||
└── refs
|
||||
├── heads
|
||||
└── tags
|
||||
\end{minted}
|
||||
\end{column}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Premier pas}
|
||||
\framesubtitle{Création d'un dossier}
|
||||
\commande{mkdir doc}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Premier pas}
|
||||
\framesubtitle{Création d'un dossier}
|
||||
\commande{git status}
|
||||
\begin{minted}[fontsize=\tiny]{bash}
|
||||
Sur la branche master
|
||||
|
||||
Validation initiale
|
||||
|
||||
rien à valider (créez/copiez des fichiers et utilisez "git add" pour les suivre)
|
||||
\end{minted}
|
||||
\begin{exampleblock}{}
|
||||
git ne prend en considération que le contenu des fichiers.
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Premier pas}
|
||||
\framesubtitle{Création d'un fichier}
|
||||
\commande{touch doc/README}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Premier pas}
|
||||
\framesubtitle{Création d'un fichier}
|
||||
\commande{git status}
|
||||
\begin{minted}[fontsize=\tiny]{bash}
|
||||
Sur la branche master
|
||||
|
||||
Validation initiale
|
||||
|
||||
Fichiers non suivis:
|
||||
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
|
||||
|
||||
doc/
|
||||
|
||||
aucune modification ajoutée à la validation mais des fichiers non suivis sont présents
|
||||
(utilisez "git add" pour les suivre)
|
||||
\end{minted}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Premier pas}
|
||||
\framesubtitle{Création d'un fichier}
|
||||
\commande{git add .}
|
||||
\skbinput[from=fig]{apps/git_trees}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Premier pas}
|
||||
\framesubtitle{Création d'un fichier}
|
||||
\commande{git status}
|
||||
\begin{minted}[fontsize=\tiny]{bash}
|
||||
Sur la branche master
|
||||
|
||||
Validation initiale
|
||||
|
||||
Modifications qui seront validées :
|
||||
(utilisez "git rm --cached <fichier>..." pour désindexer)
|
||||
|
||||
nouveau fichier : doc/README
|
||||
|
||||
\end{minted}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\commande{git commit -m "Ajout du premier fichier."}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\commande{git status}
|
||||
\begin{minted}[fontsize=\tiny]{bash}
|
||||
Sur la branche master
|
||||
rien à valider, la copie de travail est propre
|
||||
\end{minted}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,65 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\begin{tikzpicture}
|
||||
% Commit DAG
|
||||
\gitDAG[grow right sep = 2em]{
|
||||
A -- B -- {
|
||||
C,
|
||||
D -- E,
|
||||
}
|
||||
};
|
||||
% Tag reference
|
||||
\gittag
|
||||
[v0p1] % node name
|
||||
{v0.1} % node text
|
||||
{above=of A} % node placement
|
||||
{A} % target
|
||||
% Remote branch
|
||||
\gitremotebranch
|
||||
[origmaster] % node name
|
||||
{origin/master} % node text
|
||||
{above=of C} % node placement
|
||||
{C} % target
|
||||
% Branch
|
||||
\gitbranch
|
||||
{master} % node name and text
|
||||
{above=of E} % node placement
|
||||
{E} % target
|
||||
% HEAD reference
|
||||
\gitHEAD
|
||||
{above=of master} % node placement
|
||||
{master} % target
|
||||
\end{tikzpicture}
|
||||
\begin{tikzpicture}
|
||||
\gitDAG[grow right sep = 2em]{
|
||||
A -- B -- {
|
||||
C -- D' -- E',
|
||||
{[nodes=unreachable] D -- E },
|
||||
}
|
||||
};
|
||||
% Tag reference
|
||||
\gittag
|
||||
[v0p1] % node name
|
||||
{v0.1} % node text
|
||||
{above=of A} % node placement
|
||||
{A} % target
|
||||
% Remote branch
|
||||
\gitremotebranch
|
||||
[origmaster] % node name
|
||||
{origin/master} % node text
|
||||
{above=of C} % node placement
|
||||
{C} % target
|
||||
% Branch
|
||||
\gitbranch
|
||||
{master} % node name and text
|
||||
{above=of E'} % node placement
|
||||
{E'} % target
|
||||
% HEAD reference
|
||||
\gitHEAD
|
||||
{above=of master} % node placement
|
||||
{master} % target
|
||||
\SAandWT
|
||||
\end{tikzpicture}
|
||||
\end{frame}
|
||||
|
@ -2,6 +2,7 @@
|
||||
\frametitle{Git en un mot}
|
||||
\begin{itemize}
|
||||
\item projet créé en 2005
|
||||
\item sous licence GPLv2
|
||||
\item gère le code source du noyau linux
|
||||
\item est multiplateforme
|
||||
\end{itemize}
|
||||
|
@ -0,0 +1,8 @@
|
||||
\begin{frame}
|
||||
\frametitle{Références}
|
||||
\begin{itemize}
|
||||
\item \url{http://www.git-scm.com/docs}
|
||||
\item Pro-git, S. Chacon et B. Straub, Apress, 2014
|
||||
\item les pages de man : gitcore-tutorial, gitworkflows, gitcvs-migration
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,11 @@
|
||||
\begin{frame}
|
||||
\frametitle{Ce que sont les données pour git}
|
||||
Un état du répertoire = un instantané de l'état des fichiers
|
||||
\frametitle{Ce que cache le dépôt git}
|
||||
\begin{description}[répertoire de travail]
|
||||
\item[.git]<1-> Les objets et la configuration locale du dépôt git
|
||||
\item[répertoire de travail]<2-> Une arborescence de fichiers accessible à l'édition, le bac à sable
|
||||
\item[index]<3-> Les changements candidats à l'archivage
|
||||
\item[HEAD]<4-> Le dernier état archivé
|
||||
\item[stash]<5-> Une zone tampon pour les modifications à mettre momentanément de côté
|
||||
\end{description}
|
||||
\skbinput[from=fig]{apps/git_trees}
|
||||
\end{frame}
|
||||
|
5
content/outils/scm/git/web/basicssh.tex
Normal file
5
content/outils/scm/git/web/basicssh.tex
Normal file
@ -0,0 +1,5 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
fichier content/outils/scm/git/web/basicssh.tex à éditer
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
@ -1,4 +1,9 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Serveur de dépôts git}
|
||||
\framesubtitle{GitLab}
|
||||
Application combinant un serveur de dépôts git avec une interface web conviviale.
|
||||
\begin{itemize}
|
||||
\item Ruby
|
||||
\item
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
5
content/outils/scm/git/web/gitolite.tex
Normal file
5
content/outils/scm/git/web/gitolite.tex
Normal file
@ -0,0 +1,5 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
fichier content/outils/scm/git/web/gitolite.tex à éditer
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
@ -1,4 +1,8 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Des branches pour étayer le tronc}
|
||||
\begin{itemize}
|
||||
\item maintenir l'histoire du code lisible
|
||||
\item faciliter les divergences
|
||||
\item éphémères ou pérennes
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -1,4 +1,15 @@
|
||||
\begin{frame}
|
||||
\frametitle{}
|
||||
% contenu (pas trop long) de la diapositive
|
||||
\end{frame}
|
||||
\frametitle{Processus de Vincent Driessen}
|
||||
\begin{columns}
|
||||
\begin{column}{0.5\textwidth}
|
||||
\begin{itemize}
|
||||
\item Des branches \emph{master} et \emph{develop} pour le code fonctionnel
|
||||
\item Des branches pour les développements en cours
|
||||
\item Un circuit entre les branches bien fléché
|
||||
\end{itemize}
|
||||
\end{column}
|
||||
\begin{column}{0.5\textwidth}
|
||||
\skbfigure[center, figure, caption=Vincent Driessen CC-by-sa, height=0.5\textheight]{scm/git-model@2x.png}
|
||||
\end{column}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
Reference in New Issue
Block a user