Show Menu

Git Basics Cheat Sheet by

git     vcs     versionning

Config­uration

Config­uration système (pour tous les utilis­ateurs et tous les dépôts)
$ git config --system [param­etre] [valeur]
Config­uration utilis­ateur spécifique
$ git config --global [param­etre] [valeur]
Config­uration dépôt spécifique
$ git config [param­etre] [valeur]
Vérifier la config­uration
$ git config --list
Chaque fichier écrase les valeurs du fichier précédent. Les valeurs dans la config­uration du dépôt sont les plus spécif­iques et priment donc sur les valeurs de la config­uration utilis­ateur qui elles-­mêmes l'empo­rtent sur les valeurs de la config­uration système.

Récupérer un dépot git

Initia­liser un nouveau dépôt
$ cd projec­t_d­ire­ctory
$ git init
Cloner un dépôt existant
$ git clone [url]
Cloner un dépôt existant en changeant le nom du répertoire
$ git clone [url] myproject

Explorer l'hist­orique

Voir tout l'hist­orique
$ git log
Formater l'affi­chage des logs : affichage des logs sur une seule ligne
$ git log --pret­ty=­one­line
Limiter le nombre de logs affichés : avoir les 2 derniers logs
$ git log -2

Options pour formater les logs

Option
Desc­rip­tion
-p
Affiche les change­ments introduits dans chaque commit
--stat
Affiche les statis­tiques des fichiers modifiés dans chaque commit
--shor­tstat
Affiche des statis­tiques abrégées
--name­-only
Affiche juste la liste des fichiers modifiés
--name­-status
Affiche la liste des fichiers modifiés mais aussi ajoutés et supprimés
--abbr­ev-­commit
Affiche seulement les quelques premiers caractères du checksum de commit
--rela­tiv­e-date
Affiche la date dans un format relative (ex depuis 2 jours)
--graph
Affiche un graphe en ASCII des branches et des fusions en plus des inform­ations de log
--pretty
Affiche les logs dans un format altern­atif. Plusieurs options possibles : oneline, short, full, fuller et format

Options pour limiter les logs affichés

-(n)
Afficher les n derniers commits
--sinc­e,-­-after
Afficher les commits faits depuis la date indiquée
--unti­l,-­-before
Afficher les commits faits avant la date indiquée
--author
Afficher les commits dont l'entrée author correspond à la chaîne indiquée
--commiter
Afficher les commits dont l'entrée commiter correspond à la chaîne indiquée
--grep
Afficher les commits dont le message contient la chaîne indiquée
-S
Afficher les commits qui ajoutent ou enlèvent du code comportant la chaîne indiquée
 

Travailler avec le dépôt local

Vérifier l'état des fichiers
$ git status
Vérifier l'état des fichiers dans un format compact
$ git status -s
Suivre un nouveau fichier (versi­onner un nouveau fichier) ou indexer un fichier modifié
$ git add [filen­ame]
Suivre tous les fichiers du répertoire de travail
$ git add .
Voir les change­ments entre le répertoire de travail et la zone d'inde­xation (staged area) = voir les change­ments qui ne sont pas indexés
$ git diff
Voir les change­ments entre la zone id'ind­exation et le dépôt = les change­ments qui n'ont pas été commité
$ git diff --changed
Enregi­strer les change­ments dans le dépôt
$ git commit
$ git commit -m "­[me­ssa­ge]­"
Enregister les change­ments dans le dépôt sans passe la par la zone d'inde­xation
$ git commit -a -m "­[me­ssa­ge]­"
Ne plus versionner un fichier et le supprimer du répertoire
git rm [filen­ame]
Ne plus versionner un fichier sans le supprimer du répertoire
$ git rm --cached [filen­ame]
Renommer un fichier
$ git mv [file_­from] [file_to]

Revenir en arrière

Refaire un commit (pour changer le message ou ajouter des fichiers oubliés)
$ git --amend
Enlever un fichier de la zone d'inde­xation
$ git reset HEAD [filen­ame]
Supprimer les derniers change­ments d'un fichier (revenir au fichier comme il était au dernier commit)
$ git checkout -- [filen­ame]

Travailler avec les dépôts distants

Lister les noms des dépôts distants référencés localement
$ git remote
Lister les dépôts distants avec leur url
$ git remote -v
Ajoute­r/R­éfé­rencer un dépôt distant
$ git remote add [short­name] [url]
Récupérer les inform­ations d'un dépôt distant
$ git fetch [short­name]
Récupérer les inform­ations de tous les dépôts distants
$ git fetch --all
Lister les inform­ations du dépôt local concernant l'état entre banches locale­s/b­ranches distantes
$ git branch -vv
Récupérer les données d'un dépôt distant et les fusionner au dépôt local
$ git pull
Envoyer données sur un dépôt distant (pour lequel on a les droits d'écri­ture)
$ git push [short­name] [branc­hname]
Inspecter un dépôt distant
$ git remote show [short­name]
Renommer la référence (le shortname) d'un dépôt distant
$ git remote rename [current shortname] [new shortn­ame]
Enleve­r/D­éré­fér­encer un dépôt distant
$ git remote rm [short­name]
La commande fetch récupère les inform­ations du serveur distant et répercute les change­ments sans toucher aux branches locales. Il faut ensuite faire des fusions ou créer des branches locales pour pouvoir éditer les branches distantes qui n'existent pas locale­ment.
La commande pull est en quelque sorte une commande magique qui fait un fetch suivi d'un merge : pull regarde quel branche sur quel serveur est suivie par la branche locale puis récupère et fusionne les change­ments.
 

Les tags

Lister les tags
$ git tag
Lister les tags selon un filtre
$ git tag -l [pattern]
Voir les inform­ations à propos d'un tag
$ git show [tagname]
Créer un tag annoté
git tag -a [tagname] -m "­[me­ssa­ge]­"`
Créer un tag simple
$ git tag [tagname]
Taguer des commit précédents
$ git tag -a [tagname] [checksum commit]
Transférer un tag sur un dépôt distant
$ git push [short­name] [tagname]
Transférer tous les tags sur un dépôt distant
$ git push [short­name] --tags
Récupérer les fichiers corres­pondant à un tag => création d'une branche à partir de ce tag
$ git checkout -b [branc­hname] [tagname]

Les branches

Lister les branches
$ git branch
Lister les branches qui sont fusionnées avec la branche courante
$ git branch --merged
Lister les branches non fusionnées
$ git branch --no-m­erged
Créer une branche
$ git branch [branc­hname]
Voir sur quelle branche se situe le pointeur de branche (HEAD)
git log --oneline --deco­rate
Changer de branche
$ git checkout [branc­hname]
Créer une branche et se positi­onner dessus
$ git checkout -b [branc­hname]
Fusionner des branches (à partir de la branche sur laquelle on est)
$ git merge [branc­hname]
Supprimer une branche
$ git branch -d [branc­hname]
Supprimer une branche diatante
$ git push [short­name] --delete [branc­hname]

Ignorer des fichiers

Pour empêcher git de suivre automa­tiq­uement des fichiers ou même de montrer les fichiers non suivis, il faut éditer un fichier nommé .git­ign­ore dans le dépôt. Ce fichier liste un ensemble de motifs qui permettent de cibler les fichiers à exclure.
En général ce sont des fichiers générés automa­tiq­uement comme des fichiers de log ou provenant du système de build.

Les règles pour construire ce fichier sont :
les lignes vides ou commençant par # sont ignorés
les glob patterns standards sont utilis­ables
un motif qui commence par un slash (/) empêche la récurs­ivité
un motif qui se termine par un slash (/) indique un répertoire
un motif qui commence par un point d'excl­amation (!) annule le motif

Quelques exemples :
# ignorer les fichiers .log sauf le fichier
# lib.log
*.log
!lib.log
# ignorer les fichiers .tmp dans le dossier
# racine mais pas dans les sous-d­oss­iers
/*.log

Recomm­and­ations pour construire un bon fichier .git­ign­ore : https:­//g­ith­ub.c­om­/gi­thu­b/g­iti­gnore

Sources

Download the Git Basics Cheat Sheet

3 Pages
//media.cheatography.com/storage/thumb/gaelle3182_git-basics.750.jpg

PDF (recommended)

Alternative Downloads

Share This Cheat Sheet!

 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          Git Cheat Sheet
          Git Flow Cheat Sheet