🔝 Retour au Sommaire
Imaginez que vous devez taper "git status" cinquante fois par jour, ou "git log --oneline --graph --decorate --all" à chaque fois que vous voulez voir l'historique. Fatigant, non ? C'est là qu'interviennent les alias Git !
Un alias est un raccourci personnalisé pour une commande Git. C'est comme créer vos propres "touches rapides" pour les commandes que vous utilisez souvent. Au lieu de taper une longue commande, vous tapez juste 2-3 lettres.
Exemples :
git stau lieu degit statusgit coau lieu degit checkoutgit lgau lieu degit log --oneline --graph --all
Les alias peuvent vous faire gagner des heures par mois et rendre votre travail avec Git beaucoup plus agréable ! ⚡
Un alias Git est :
- Un raccourci personnalisé pour une commande Git
- Stocké dans votre configuration Git (fichier
.gitconfig) - Global (tous vos dépôts) ou local (un seul dépôt)
- Peut être simple ou complexe (avec des paramètres, des fonctions)
Analogie : C'est comme créer un contact dans votre téléphone. Au lieu de taper le numéro complet à chaque fois, vous tapez juste le nom.
Il existe deux façons de créer des alias : via la ligne de commande ou en éditant le fichier de configuration.
git config --global alias.<nom-alias> '<commande>'Exemples simples :
# Créer un alias 'st' pour 'status'
git config --global alias.st status
# Créer un alias 'co' pour 'checkout'
git config --global alias.co checkout
# Créer un alias 'br' pour 'branch'
git config --global alias.br branch
# Créer un alias 'ci' pour 'commit'
git config --global alias.ci commitUtilisation :
git st # équivalent à git status
git co main # équivalent à git checkout main
git br -a # équivalent à git branch -a
git ci -m "Message" # équivalent à git commit -m "Message"# Ouvrir le fichier de configuration
git config --global --editAjouter dans le fichier :
[alias]
st = status
co = checkout
br = branch
ci = commitAvantages : Plus rapide pour ajouter plusieurs alias d'un coup, plus lisible.
Les alias les plus basiques remplacent simplement une commande par une autre :
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'Vous pouvez inclure des options dans vos alias :
# Voir les branches avec plus d'infos
git config --global alias.bv 'branch -v'
# Commit avec ajout automatique
git config --global alias.ciam 'commit -am'
# Status court
git config --global alias.s 'status -s'
# Log avec graphe
git config --global alias.lg 'log --oneline --graph --decorate --all'Utilisation :
git s # Status court
git ciam "Message" # Add all + commit
git lg # Log graphique magnifiquePour des alias plus complexes, utilisez une fonction shell avec ! :
git config --global alias.undo '!git reset --soft HEAD~1'Le ! indique à Git d'exécuter la commande comme un script shell plutôt qu'une commande Git.
Exemples avancés :
# Créer une branche et switcher dessus
git config --global alias.cob '!git checkout -b'
# Supprimer les branches mergées
git config --global alias.bclean '!git branch --merged | grep -v "\*" | xargs -n 1 git branch -d'
# Voir les contributeurs triés par nombre de commits
git config --global alias.contributors '!git shortlog -sn'Voici une collection d'alias que tout le monde devrait avoir :
[alias]
# Commandes courtes
st = status
s = status -s
co = checkout
br = branch
ci = commit
# Ajout et commit
a = add
aa = add --all
cm = commit -m
cam = commit -am
# Pousser et tirer
ps = push
pl = pull
# Voir les différences
d = diff
dc = diff --cached[alias]
# Log simple et lisible
l = log --oneline
lg = log --oneline --graph --decorate --all
# Log avec plus de détails
ll = log --pretty=format:"%C(yellow)%h%Cred%d %Creset%s%Cblue [%an]" --decorate --numstat
# Voir le dernier commit
last = log -1 HEAD
# Historique d'un fichier
filelog = log -u[alias]
# Annuler le dernier commit (garde les modifications)
undo = reset --soft HEAD~1
# Annuler les modifications non commitées
unstage = reset HEAD --
discard = checkout --
# Voir les branches
branches = branch -a
# Voir les tags
tags = tag -l
# Voir les remotes
remotes = remote -v# Créer et checkout une nouvelle branche
git config --global alias.cob '!f() { git checkout -b "$1"; }; f'
# Utilisation :
git cob feature/new-featureExplication :
!f() { ... }; f: Crée une fonction shell temporaire"$1": Premier paramètre passé à l'alias- La fonction est appelée immédiatement
Autres exemples :
# Commit avec préfixe automatique
git config --global alias.feat '!f() { git commit -m "feat: $1"; }; f'
git config --global alias.fix '!f() { git commit -m "fix: $1"; }; f'
# Utilisation :
git feat "Add login feature" # commit: "feat: Add login feature"
git fix "Correct typo" # commit: "fix: Correct typo"[alias]
# Supprimer les branches mergées (sauf main/develop)
bclean = "!f() { git branch --merged ${1-main} | grep -v " ${1-main}$" | xargs git branch -d; }; f"
# Nettoyer les branches distantes obsolètes
prune = fetch --prune
# Supprimer tous les fichiers non trackés
cleanup = clean -fd[alias]
# Arbre magnifique de l'historique
tree = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
# Graphe ASCII de l'historique
graph = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
# Voir qui a modifié quoi
who = shortlog -sne
# Statistiques du dépôt
stats = shortlog -sn --all --no-merges[alias]
# Trouver un commit par message
find = "!git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%an]' --date=short --grep"
# Trouver dans les fichiers
grep = grep -Ii
# Chercher dans l'historique
search = "!f() { git log -S\"$1\" --oneline; }; f"[alias]
# Voir toutes les branches avec leur dernier commit
bv = branch -v
bvv = branch -vv
# Supprimer une branche locale et distante
bdel = "!f() { git branch -d $1; git push origin --delete $1; }; f"
# Renommer la branche actuelle
rename = branch -m
# Voir les branches récentes
recent = "!git for-each-ref --count=10 --sort=-committerdate refs/heads/ --format='%(refname:short)'"Voici une configuration d'alias complète et moderne :
[alias]
# === Commandes de base ===
st = status
s = status -s
co = checkout
cob = checkout -b
br = branch
ci = commit
cm = commit -m
cam = commit -am
# === Ajout ===
a = add
aa = add --all
ap = add --patch
# === Log et historique ===
l = log --oneline
lg = log --oneline --graph --decorate --all
last = log -1 HEAD
# Historique magnifique avec couleurs
tree = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
# === Diff ===
d = diff
dc = diff --cached
ds = diff --stat
# === Reset et undo ===
undo = reset --soft HEAD~1
unstage = reset HEAD --
discard = checkout --
# === Branches ===
branches = branch -a
bv = branch -v
recent = "!git for-each-ref --count=10 --sort=-committerdate refs/heads/ --format='%(refname:short)'"
# === Remote ===
remotes = remote -v
# === Stash ===
sl = stash list
sp = stash pop
ss = stash save
# === Tags ===
tags = tag -l
# === Utilitaires ===
who = shortlog -sne
stats = shortlog -sn --all --no-merges
contributors = shortlog -sn
# === Aliases avancés ===
# Conventional commits
feat = "!f() { git commit -m \"feat: $1\"; }; f"
fix = "!f() { git commit -m \"fix: $1\"; }; f"
docs = "!f() { git commit -m \"docs: $1\"; }; f"
# Créer et push une branche
pushnew = "!git push -u origin $(git branch --show-current)"
# Amend sans changer le message
amend = commit --amend --no-edit
# Voir les fichiers ignorés
ignored = ls-files -o -i --exclude-standardgit config --global --editCopiez-collez la configuration ci-dessus.
Créez un fichier install-git-aliases.sh :
#!/bin/bash
echo "Installation des alias Git..."
# Commandes de base
git config --global alias.st status
git config --global alias.s "status -s"
git config --global alias.co checkout
git config --global alias.cob "checkout -b"
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.cm "commit -m"
git config --global alias.cam "commit -am"
# Log
git config --global alias.l "log --oneline"
git config --global alias.lg "log --oneline --graph --decorate --all"
git config --global alias.last "log -1 HEAD"
# Diff
git config --global alias.d diff
git config --global alias.dc "diff --cached"
# Reset
git config --global alias.undo "reset --soft HEAD~1"
git config --global alias.unstage "reset HEAD --"
# Branches
git config --global alias.branches "branch -a"
git config --global alias.bv "branch -v"
echo "✅ Alias installés avec succès !"
echo "Testez avec : git st"Utilisation :
chmod +x install-git-aliases.sh
./install-git-aliases.sh[alias]
# Démarrer une feature
feature = "!f() { git checkout develop && git pull && git checkout -b feature/$1; }; f"
# Terminer une feature
feature-done = "!f() { git checkout develop && git merge --no-ff feature/$1 && git branch -d feature/$1; }; f"
# Hotfix
hotfix = "!f() { git checkout main && git pull && git checkout -b hotfix/$1; }; f"[alias]
# Synchroniser avec main et créer une branche
new = "!f() { git checkout main && git pull && git checkout -b $1; }; f"
# Mettre à jour la branche actuelle depuis main
sync = "!git fetch origin && git rebase origin/main"
# Push et créer la PR (avec GitHub CLI)
pr = "!git push -u origin $(git branch --show-current) && gh pr create"[alias]
# Tag et release
release = "!f() { git tag -a $1 -m \"Release $1\" && git push origin $1; }; f"
# Voir la version actuelle
version = describe --tags --abbrev=0
# Déployer en production
deploy-prod = "!git checkout main && git pull && git push production main"[alias]
# Voir les modifications récentes
wtf = log --pretty=format:'%Cred%h %Creset- %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --since='1 week ago'
# Trouver qui a cassé le code
blame-line = "!f() { git blame -L $2,$2 $1; }; f"
# Voir l'historique d'un fichier supprimé
find-deleted = "!git log --diff-filter=D --summary | grep"
# Chercher un bug (bisect simplifié)
bisect-start-auto = "!f() { git bisect start && git bisect bad && git bisect good $1; }; f"git config --global --get-regexp aliasOu créez un alias pour ça :
git config --global alias.aliases "config --get-regexp alias"
# Utilisation
git aliasesgit config --global --unset alias.nom-aliasExemple :
git config --global --unset alias.stRecréez-le simplement :
git config --global alias.st "status -s"
# Remplace l'ancien alias 'st'Vous pouvez aussi créer des alias dans votre shell pour rendre Git encore plus rapide :
# Alias Git ultra-courts
alias g='git'
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git pull'
alias gco='git checkout'
alias gb='git branch'
alias gd='git diff'
alias gl='git log --oneline'
# Avec autocomplétion (bash)
complete -o default -o nospace -F _git gUtilisation :
g st # git status
gs # git status
ga . # git add .
gc -m "msg" # git commit -m "msg"Voici des alias populaires utilisés par de nombreux développeurs :
[alias]
# Git obliterate - supprime complètement un fichier de l'historique
obliterate = "!f() { git filter-branch --force --index-filter \"git rm --cached --ignore-unmatch $1\" --prune-empty --tag-name-filter cat -- --all; }; f"
# Visualiser les contributions
activity = "!git log --since='1 month ago' --author=\"$(git config user.name)\" --oneline"
# Export vers archive
export = "!f() { git archive --format=zip --output=\"${1}.zip\" HEAD; }; f"
# Compter les lignes de code
count = "!git ls-files | xargs wc -l"
# Voir les fichiers les plus modifiés
churn = "!git log --all -M -C --name-only --format='format:' \"$@\" | sort | grep -v '^$' | uniq -c | sort -n"
# Alias fantaisistes
yolo = "!git add -A && git commit -m \"$(curl -s whatthecommit.com/index.txt)\""
oops = commit --amend --no-editNe créez pas 50 alias d'un coup. Commencez par :
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branchAjoutez-en au fur et à mesure de vos besoins.
# ✅ Bon : facile à retenir
git config --global alias.st status
git config --global alias.undo "reset --soft HEAD~1"
# ❌ Mauvais : cryptique
git config --global alias.x status
git config --global alias.zz "reset --soft HEAD~1"[alias]
# Supprimer toutes les branches mergées dans main
# Usage: git bclean
bclean = "!git branch --merged main | grep -v 'main' | xargs git branch -d"Créez un fichier git-aliases.txt dans votre projet avec les alias recommandés.
# Sauvegarder
cp ~/.gitconfig ~/gitconfig-backup
# Ou versionner
git init ~/dotfiles
cp ~/.gitconfig ~/dotfiles/
cd ~/dotfiles && git add . && git commit -m "Backup git config"# ❌ Mauvais : écrase 'git log'
git config --global alias.log "log --oneline"
# ✅ Bon : crée un nouvel alias
git config --global alias.l "log --oneline"Si un alias fait plus de 3 lignes, créez plutôt un script séparé.
git config --global --get alias.nom-aliasExemple :
git config --global --get alias.lg
# log --oneline --graph --decorate --allgit -c alias.test='!echo "Test: $@"' test arg1 arg2
# Test: arg1 arg2GIT_TRACE=1 git votre-aliasUtilisez des alias différents selon le dépôt :
~/.gitconfig :
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
[includeIf "gitdir:~/personal/"]
path = ~/.gitconfig-personal~/.gitconfig-work :
[alias]
ci = commit -s # Avec sign-off pour le travail~/.gitconfig-personal :
[alias]
ci = commit # Sans sign-off pour perso# Alias pour démarrer la journée
git config --global alias.morning '!git checkout main && git pull && git fetch --prune'
# Utilisation
git morning
# ✅ Vous êtes à jour et prêt à travailler !# Alias pour terminer la journée
git config --global alias.eod '!git add -A && git commit -m "EOD: Work in progress" && git push'
# Utilisation
git eod
# ✅ Votre travail est sauvegardé !# Voir ce qui a changé aujourd'hui
git config --global alias.today 'log --since=midnight --author="$(git config user.name)" --oneline'
# Utilisation
git todayVoici les alias que vous devriez avoir au minimum :
# Les 10 alias indispensables
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.cm "commit -m"
git config --global alias.l "log --oneline"
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.d diff
git config --global alias.undo "reset --soft HEAD~1"
git config --global alias.aliases "config --get-regexp alias"- Oh My Zsh Git plugin : Collection massive d'alias
- Dotfiles sur GitHub : Recherchez "dotfiles" pour voir les configs d'autres développeurs
- Git wiki : Liste d'alias communautaires
- Oh My Zsh : Framework qui inclut des alias Git automatiques
- Git extras : Collection de scripts et d'alias Git utiles
- Tig : Interface texte pour Git (alternative aux alias pour certaines tâches)
| Catégorie | Exemples | Usage |
|---|---|---|
| Commandes courtes | st, co, br, ci | Économiser la frappe |
| Log amélioré | lg, tree, last | Mieux visualiser l'historique |
| Workflow | feat, fix, pr | Conventional commits, automatisation |
| Nettoyage | bclean, prune | Maintenance du dépôt |
| Recherche | find, search, who | Déboguer et investiguer |
| Utilitaires | undo, amend, oops | Corriger les erreurs |
Les alias Git sont un moyen simple et puissant d'améliorer votre productivité. Ils vous permettent de :
Points clés à retenir :
- Les alias transforment des commandes longues en raccourcis courts
- Créez des alias avec
git config --global alias.nom 'commande' - Commencez avec des alias simples (st, co, br)
- Ajoutez progressivement des alias plus complexes selon vos besoins
- Documentez et partagez vos alias avec votre équipe
- Sauvegardez votre
.gitconfig
Pour commencer immédiatement :
# Installer les 5 alias essentiels
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.l "log --oneline"
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.undo "reset --soft HEAD~1"
# Tester
git stGain de temps estimé :
Si vous faites 100 commandes Git par jour :
- Sans alias : ~10 minutes de frappe
- Avec alias : ~3 minutes de frappe
- Gain : 7 minutes/jour = 30 heures/an ! ⏱️
Avec des alias bien configurés, Git devient plus rapide, plus agréable et plus productif. Prenez 15 minutes pour configurer vos alias aujourd'hui, vous gagnerez des heures dans le futur ! 🚀
Fin du Module 6 : Fonctions avancées ✅
Félicitations ! Vous maîtrisez maintenant les outils avancés de Git : stash, cherry-pick, rebase interactif, reflog, bisect, blame, tags, submodules, hooks et alias. Vous êtes prêt à utiliser Git comme un pro ! 🎉