Git

Table of contents

  1. Git
    1. Pense-bête
      1. Faire un diff entre la version actuelle et la précédente
      2. Afficher la version d'un fichier à une révision spécifique
    2. Astuces
      1. Exclure définitivement certains fichiers du versionnage
      2. Commandes Git raccourcies grâce aux aliases
      3. Colorier l'affichage des messages de Git
      4. Transformer un dépôt "normal" en dépôt "bare"

Pense-bête

Faire un diff entre la version actuelle et la précédente

git diff HEAD^ HEAD

Afficher la version d'un fichier à une révision spécifique

git show 0ac056dcc7895d222eccb6ab40e9b2f911ba2634:mon_fichier.c

Astuces

Exclure définitivement certains fichiers du versionnage

Si vous ne voulez pas que Git prenne en compte les fichiers temporaires (ex : fichiers temporaires .xxxxx.swp générés par Vim) ou encore les fichiers non pertinents (ex : fichiers de cache .pyc de Python), ajoutez les patterns correspondant dans le fichier .gitignore à la racine de votre copie de travail :

*.pyc
*.swp

Commandes Git raccourcies grâce aux aliases

Les mots-clés raccourcis (co, ci, up...) de Subversion vous manquent ? Pas de panique, il est possible d'utiliser les commandes de Git avec des alias raccourcis. Dans votre fichier ~/.gitconfig, ajoutez les lignes suivantes :

[alias]
    ci = commit
    co = checkout
    st = status

...et ainsi de suite, selon vos envies.

Colorier l'affichage des messages de Git

Pour mettre un peu de couleurs dans l'affichage de Git selon la nature des messages affichés, ajoutez la configuration suivante à votre fichier ~/.gitconfig :

[color]
    ui = auto

[color "branch"]
    current = yellow bold

[color "diff"]
    frag = magenta bold
    meta = yellow bold
    new = blue bold
    old = red bold

[color "status"]
    added = green bold
    changed = red bold

Vous trouverez la liste exhaustive des mots-clés dans le man git-config(1).

Transformer un dépôt "normal" en dépôt "bare"

Git gère 2 types de dépôts : les dépots "normaux" — qui sont des copies de travail locales, contenant les fichiers versionnés — et les dépôts dits "bare" qui ne servent qu'à recevoir les commits sans permettre de manipuler directement les fichiers qui y sont versionnés. Pour "transformer" un dépot normal en un dépot "bare", deux méthodes possibles :

a) cloner le dépôt existant :

git clone -l --bare blah blah.git # "blah.git" est la version "bare" du dépôt normal "blah"

b) manuellement :

cd blah
mv .git .. && rm -fr *
mv ../.git .
mv .git/* .
rmdir .git
git config --bool core.bare true
cd .. && mv blah blah.git # facultatif, "<nom du dépôt>.git" est juste une convention