Show Menu
Cheatography

Git Basics Cheat Sheet by

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=­oneline
Limiter le nombre de logs affichés : avoir les 2 derniers logs
$ git log -2

Options pour formater les logs

Option
Descri­ption
-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 [filename]
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 [filename]
Ne plus versionner un fichier sans le supprimer du répertoire
$ git rm --cached [filename]
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 [filename]
Supprimer les derniers change­ments d'un fichier (revenir au fichier comme il était au dernier commit)
$ git checkout -- [filename]

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 shortname]
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 --decorate
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é .gitignore 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­ossiers

/*.log


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

Sources

       
 

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