diff --git a/gitrefcard.tex b/gitrefcard.tex index 81ebd6fe314997b04244af03bf415f8404e82d50..a924b8cfe84ac900b7d3863e242f6915a597d75d 100644 --- a/gitrefcard.tex +++ b/gitrefcard.tex @@ -77,19 +77,39 @@ \end{tabular} } +\small + +% REVOIR LE GIT RESET DANS LE SCHÉMA ET DANS LES EXPLICATIONS : ÇA NE SE +% LIMITE BIEN SÛR PAS À L'INDEX ! -> TROUVER QUELQUE CHOSE DE PLUS +% SATISFAISANT ! + +% Il suffit a priori d'ajouter une flèche supplémentaire partant du +% dépôt vers le WD. Par la même occasion, en ajouter une autre pour le +% checkout + %====================================================================== \subsection{Résumé des commandes} %====================================================================== +\vspace*{-5mm} +\soustitre{Note : dans de nombreux cas, les paramètres (de commandes) + présentés peuvent être ajoutés les uns aux autres pour cumuler les + effets (voir les pages de manuel).} + +% On neutralise le retrait première ligne +\setlength{\parindent}{0pt} \titresec{Création d'un dépôt} %---------------------------------------------------------------------- -\begin{tabular}{p{1.7cm}l} +% \sepcom +\begin{tabular}{p{2.1cm}l} \ex{git init}\exindex{git init} & Création d'un dépôt\index{depot@dépôt} vide\\ +% \sepcom \ex{git clone}\exindex{git clone} & Clone d'un dépôt\index{depot@dépôt} (avec tout son historique + configuration du dépôt distant)\\ +% \sepcom \end{tabular} \titresec{Alimentation de l'index} @@ -113,24 +133,59 @@ enfants/parents)\\ \includegraphics[width=.65\linewidth]{princindex.eps} \end{center} -\titresec{Création de commit} +\titresec{Création de commit \soustitre{(tout commit créé vide + entièrement l'index)}} %---------------------------------------------------------------------- -\soustitre{Toute création de commit vide entièrement l'index}\\ \begin{tabular}{p{3.4cm}l} \ex{git commit}\exindex{git commit} & Crée un commit + lance un éditeur pour la saisie du message de log\\ \ex{git commit -m <\emph{msg}>}\exindex{git commit} & Crée un commit avec le message de log \exe{msg}\\ +\ex{git commit -a}\exindex{git commit} & Crée un commit incluant +\textbf{toutes} les modifications (ne concerne cependant que les +fichiers suivis)\\ +\ex{git commit \mm amend}\exindex{git commit}\exindat{amend}{\mm +amend} & Nouveau commit fusionnant avec le dernier (ex : oubli de +fichier et/ou modification de log)\\ +\end{tabular} + +\titresec{Examen des différences} +%---------------------------------------------------------------------- + +\begin{tabular}{p{3.4cm}l} +\ex{git diff}\exindex{git diff} & Différences qui peuvent être ajoutées +à l'index (compléter !)\\ +\ex{git diff \mm staged}\exindex{git diff} & Différences ajoutées à +l'index (??) +à l'index\\ +\ex{git diff \mm cached}\exindex{git diff} & Différences entre... ??\\ +\ex{git diff HEAD}\exindex{git diff} & Différences entre... ??\\ \end{tabular} + + %====================================================================== \subsection{Scénarios classiques} %====================================================================== +\titresec{Récupération du dépôt à un commit donné} +\begin{itemize} +\item + \ex{git checkout \emph{commit}} +\item + Gestion de la tête détachée... +\end{itemize} + %====================================================================== \subsection{Commandes utiles} %====================================================================== +\begin{tabular}{p{3.4cm}l} +\ex{git remote -v}\exindex{git remote} & Affiche les infos du dépôt +distant\\ +\end{tabular} + + %====================================================================== \subsection{Configuration} \label{sec:conf} @@ -146,6 +201,7 @@ avec le message de log \exe{msg}\\ %====================================================================== \subsubsection{\ex{git init}} \label{sec:gitinit} +\exindex{git init} %====================================================================== \begin{itemize} @@ -160,7 +216,7 @@ avec le message de log \exe{msg}\\ réalisé \item Avant la création du premier dépôt, penser à configurer globalement - \ex{git}~\myref{conf}. + \ex{git}~\myref{sec:conf}. \end{itemize} \begin{tikzpicture} @@ -168,16 +224,89 @@ avec le message de log \exe{msg}\\ % \draw [very thin, gray] (-1,-1) grid[step=0.5](2,2); % \tikzstyle{localrep}=[draw,rectangle,rounded corners=3pt,localrep] \tikzset{slr/.style={draw,rectangle,rounded - corners=3pt,fill=localrep,minimum width=3cm}} + corners=3pt,fill=nlocalrep,minimum width=3cm}} \tikzset{sin/.style={draw,rectangle,rounded - corners=3pt,fill=index,minimum width=3cm}} + corners=3pt,fill=nindex,minimum width=3cm}} \tikzset{swd/.style={draw,rectangle,rounded - corners=3pt,fill=workdir,minimum width=3cm}} - \node[slr] (L) at (0,0){\begin{tabular}{c}Yop\\\raisebox{3mm}{\rule{2.5cm}{0.4pt}}\\ Argh\\Plouf\end{tabular}}; + corners=3pt,fill=nworkdir,minimum width=3cm}} + \node[slr] (L) at (0,0){\sffamily\bfseries\begin{tabular}{c}Yop\\\raisebox{3mm}{\rule{2.5cm}{0.4pt}}\\ Argh\\Plouf\end{tabular}}; \node[sin] (I) at (4,0){Yop}; \node[swd] (W) at (8,0){Zap !}; \end{tikzpicture} +%====================================================================== +\subsubsection{\ex{git clone}} +\label{sec:gitclone} +\exindex{git clone} +%====================================================================== + +\begin{itemize} +\item + Positionnement automatique de la configuration relative au dépôt + distant (pour information, ces informations se retrouvent dans le + fichier \ex{.git/config} +\end{itemize} + +%====================================================================== +\subsubsection{\ex{git add}} +\label{sec:gitadd} +\exindex{git add} +%====================================================================== + +%====================================================================== +\subsubsection{\ex{git commit}} +\label{sec:gitcommit} +\exindex{git commit} +%====================================================================== + +\begin{itemize} +\item + Le point sur \ex{git commit \mm amend}\exindat{amend}{\mm amend} : + cette commande supprime le dernier commit (tout en gardant dans le + WD les modifications qui avaient été introduites par ce commit) et + ajoute un nouveau commit. + Cas classiques d'utilisation : + \begin{itemize} + \item + le dernier message de log n'était pas correct : cela permet d'en + écrire un nouveau + \item + le dernier commit ne contenait pas toutes les modifications qu'il + aurait dû contenir : cela permet d'en ajouter + \item + un effet combiné des 2 scénarios présentés ci-dessus. + \end{itemize} + \textbf{Attention} : il est essentiel de comprendre que l'historique + (des commits) du dépôt est donc réécrite à cette occasion. + Incidemment, il \textbf{ne faut surtout pas} utiliser cette commande + si le commit en question a déjà été envoyé sur le dépôt distant + \emph{via} un \ex{git push} typiquement : cela «~casserait~» la + synchronisation avec les autres développeurs. + Si le commit «~à problème~» a déjà été envoyé, il est trop tard pour + l'amender et il \textbf{faut donc trouver une autre parade}. +\end{itemize} + +%====================================================================== +\subsubsection{\ex{git diff}} +\label{sec:gitdiff} +\exindex{git diff} +%====================================================================== + +\begin{itemize} +\item + Les nombreuses variantes permettent de visualiser les différences + existant entre toutes les paires de zones de stockages. +\item + Quelques précisions sur certaines des commandes présentes dans le + résumé des commandes +\end{itemize} + +%====================================================================== +\subsubsection{\ex{git checkout}} +\label{sec:gitcheckout} +\exindex{git checkout} +%====================================================================== + \printindex