Skip to content
Snippets Groups Projects
Commit 239536cc authored by Philippe Dosch's avatar Philippe Dosch
Browse files

Ajoute une 4ième partie, sur les usages avancés

parent 45ab7b2a
No related branches found
No related tags found
No related merge requests found
%======================================================================
\section{Astuces de base}
%======================================================================
\subsection{Outils liés à Git}
%======================================================================
\frame{\frametitle{Outils liés à Git}
\begin{itemize}
\item
\ex{gitk} : un navigateur graphique de dépôt Git (\emph{i.e.}
lecture)
\item
\ex{git gui} : un \emph{front-end} graphique pour dépôt Git
(\emph{i.e.} lecture et écriture)
\item
\ex{gitstats} : un outil de génération de statistiques pour dépôt
Git
\item
\ex{gitg} : un outil (Linux) permettant de naviguer facilement
dans l'intégralité des sources des différentes versions d'un dépôt
\item
\ex{giggle} : encore un outil de consultation, mais offrant des
\textbf{vues fichier} (suivi de tous les commits relatifs à
\textbf{un} fichier typiquement)
\end{itemize}
}
%======================================================================
\subsection{Autres commandes intéressantes}
%======================================================================
\frame{\frametitle{Autres commandes intéressantes}
\begin{itemize}
\item
\ex{git checkout} : rétablit le projet dans un de ses états
antérieurs (commit, branche, tag...)
\item
\ex{git blame} : affiche l'auteur et la révision de chaque ligne
d'un fichier
\item
\ex{git remote} : gestion des dépôts distants (centraux ou
d'autres utilisateurs)
\item
\ex{git bisect} : permet de localiser par dichotomie un commit
ayant introduit un bug
\item
\ex{git gc} : compacte le dépôt Git (à utiliser de temps en temps
pour gagner de la place)
\item
\ex{git grep} : recherche d'expression régulière uniquement dans
les fichiers suivis par Git
\end{itemize}
}
%======================================================================
% http://stackoverflow.com/questions/7229885/gitignore-vs-gitkeep
\frame{\frametitle{Répertoires vides}
\begin{itemize}
\item
Il arrive dans certains cas que l'on souhaite ajouter un
répertoire vide (sans contenu) dans un dépôt
\item
Problème : Git ne gère que les contenus de fichiers, ce type de
répertoire n'a pas de fichier et ne peut donc pas être géré en
l'état
\item
Une convention : définir un fichier vide nommé \ex{.gitkeep} dans
le répertoire pour qu'il puisse être pris en compte
\end{itemize}
}
%======================================================================
% Et encore :
% - Des commandes comme 'git rebase -i' permettent de réécrire une
% partie de l'historique interactivement, ce qui peut être très
% pratique avant une publication pour supprimer/réécrire/fusionner
% des commits qui ne font que des corrections mineures par rapport à
% des commits ayant eu lieu juste avant. À proscrire naturellement si
% l'historique sur lequel on veut travailler a déjà été publié.
% -> très pratique !!
% - Si on utilise des 'git pull' de base, effectuant donc des merge et
% pas des rebase, générant ainsi beaucoup de message de merge dans
% les logs, une commande comme 'git log --no-merges' peut être utile
% parler de git stash !
% parler de vcsh et consorts
% http://blog.olivierdelort.net/?p=1261
%======================================================================
\section{Commits partiels}
%======================================================================
\frame{\frametitle{Commit partiel de bas-niveau}
\begin{itemize}
\item
En utilisant \ex{git add --edit}
\begin{itemize}
\item
toutes les modifications de tous les fichiers se retrouvent au
sein d'un même fichier, ouvert sous l'éditeur
\item
toutes les lignes de modifications (préfixées par
\textcolor{green}{\ex{+}} ou \textcolor{red}{\ex{-}}) seront
ajoutées à l'index
\item
il est possible de supprimer les lignes qu'on ne veut pas
indexer avant de sortir de l'éditeur
\end{itemize}
\end{itemize}
}
%======================================================================
\frame{\frametitle{Commit partiel de plus haut niveau}
\begin{itemize}
\item
En utilisant \ex{git add -p}
\begin{itemize}
\item
les modifications sont présentées par \emph{hunk} (parties),
\emph{i.e.} regroupements de lignes de modifications connexes
\item
chaque partie est présentée indépendamment des autres et on
choisit interactivement
\begin{itemize}
\item
si on l'ajoute à l'index
\item
si on l'ajoute à l'index ainsi que toutes les autres du même
fichier
\item
si on ne l'ajoute pas en passant à la partie suivante du même
fichier
\item
si on ne l'ajoute pas en passant au fichier suivant
\item
...
\end{itemize}
\end{itemize}
\end{itemize}
}
%======================================================================
\frame{\frametitle{Autres commits partiels}
\begin{itemize}
\item
Les commits partiels sont également définissables
\begin{itemize}
\item
en choisissant « \emph{patch} » alors qu'on était en indexage
interactif (\ex{git add -i})
\item
depuis \ex{git gui}
\item
en appuyant sur \ex{TAB} en regard du fichier contenant la
partie concernée avec \ex{magit} sous Emacs
\end{itemize}
\end{itemize}
}
%======================================================================
\section{Le remisage (\texttt{git stash})}
%======================================================================
\frame{\frametitle{Principe}
\begin{itemize}
\item
Top
\end{itemize}
}
%======================================================================
\frame{\frametitle{Commandes de base}
\begin{itemize}
\item
Détail des commandes
\end{itemize}
}
%======================================================================
% À extraire de https://www.youtube.com/watch?v=ypR-rEBCoag
\frame{\frametitle{Le remisage nommé}
\begin{itemize}
\item
\end{itemize}
}
%======================================================================
\section{Trouver le(s) coupable(s)}
%======================================================================
\frame{\frametitle{Principe}
\begin{itemize}
\item
C'est le domaine d'action de \ex{git blame}
\item
Chaque ligne est présentée avec ses méta-informations
\item
Problème : on accède \textbf{juste} aux dernières
méta-informations (pas pratique si le code a été réindenté...)
\end{itemize}
}
%======================================================================
\frame{\frametitle{Historique d'une ligne}
\begin{itemize}
\item
\end{itemize}
}
%======================================================================
\frame{\frametitle{Avec filtrage sur une fonction !}
\begin{itemize}
\item
% Voir la syntaxe \ex{git log -L :fonction:fichier:}
\end{itemize}
}
%======================================================================
\section{\texttt{vcsh}}
%======================================================================
\subsection{Trucs et astuces}
%======================================================================
\frame{\frametitle{Trucs et astuces}
\begin{itemize}
\item
Première propagation d'un dépôt local vers un dépôt central
distant\\
\ex{git remote add origin \emph{url}}\\
\ex{git push -u origin master}
\item
Indexation partielle de fichiers (pour répartir les modifications
d'un fichier sur plusieurs commits)\\
\ex{git add -p}
\item
Suppression de tous les fichiers non suivis et ignorés\\
\ex{git clean -fx}
\item
Suppression d'un fichier de l'index (il ne participera donc pas
au prochain commit)\\
\ex{git reset HEAD \emph{fichier}}
\end{itemize}
}
%======================================================================
\frame{\frametitle{Trucs et astuces}
\begin{itemize}
\item
Restaurer un seul fichier à partir du dernier commit\\
\ex{git checkout HEAD \emph{fichier}}
\item
Quelles modifications depuis les 15 derniers jours ?\\
\ex{git whatchanged --since="2 weeks ago"}
\item
Changer le commentaire du dernier commit\\
\ex{git commit --amend -m "Le nouveau commentaire."}
\item
Compter le nombre de commits par contributeur\\
\ex{git shortlog -sn}
\item
Créer une archive ZIP de son projet\\
\ex{git archive --format=zip HEAD > projet.zip}
\end{itemize}
}
%======================================================================
\subsection{Bonnes pratiques}
%======================================================================
% Extrait de
% http://www.git-tower.com/learn/ebook/command-line/appendix/best-practices#start
\frame{\frametitle{Bonnes pratiques}
\begin{itemize}
\item
Ne pas traiter plusieurs choses sans relation dans un commit
\item
Faire des commits fréquents
\item
Ne pas faire un commit sur quelque chose de non finalisé
\item
Tester avant de faire un commit
\item
Définir de «~bons~» messages de log
\item
Se mettre d'accord sur un \emph{workflow} lors de développement en
équipe
\item
Utiliser les branches...
\end{itemize}
}
%======================================================================
%\subsection{Liens}
%======================================================================
% Ajouter des liens vers des tutoriels, type git zombie ?
% Genre : https://try.github.io
\frame{\frametitle{Liens}
\begin{itemize}
\item
\emph{Homepage} : \url{http://git-scm.com/}
\item
\emph{Livre en français} : \url{http://git-scm.com/book/fr}
\item
\emph{Github} (hébergement de projets) : \url{https://github.com/}
\item
\emph{Bitbucket} (hébergement de projets) : \url{https://bitbucket.org/}
\item
\emph{Git interactif} :
\url{http://ndpsoftware.com/git-cheatsheet.html}
\item
\emph{LearnGitBranching} (pour apprendre à gérer des branches)~:
\url{http://pcottle.github.io/learnGitBranching/}
\item
\emph{Gource} (visualisation 3D d'un projet sous forme d'arbre)~:
\url{https://github.com/acaudwell/Gource}
\end{itemize}
}
%======================================================================
\documentclass{IutSlideBeamerNew}
\title{Git}
\subtitle{Plus loin avec Git}
\date{5 novembre 2014}
\AtBeginSubsection[]
{
% \beamertemplateshadingbackground{monbleu}{white}
\frame<beamer>
{
\frametitle{Sommaire}
\tableofcontents[currentsection,currentsubsection]
}
% \beamertemplatesolidbackgroundcolor{white}
}
\usepackage{gitcommon}
\begin{document}
\frame{\titlepage}
%======================================================================
%\frame{\frametitle{Sommaire}\tableofcontents[part=1]}
\frame{\frametitle{Sommaire}\tableofcontents}
%======================================================================
%\part{En route}
%======================================================================
\include{advancedgit}
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment