Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
git-jso
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
DOSCH Philippe
git-jso
Commits
239536cc
Commit
239536cc
authored
10 years ago
by
Philippe Dosch
Browse files
Options
Downloads
Patches
Plain Diff
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
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
advancedgit.tex
+358
-0
358 additions, 0 deletions
advancedgit.tex
gitmore.tex
+37
-0
37 additions, 0 deletions
gitmore.tex
with
395 additions
and
0 deletions
advancedgit.tex
0 → 100644
+
358
−
0
View file @
239536cc
%======================================================================
\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}
}
%======================================================================
This diff is collapsed.
Click to expand it.
gitmore.tex
0 → 100644
+
37
−
0
View file @
239536cc
\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}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment