Git, vous connaissez, les alias je ne suis pas sûr. C'est un outil indispensable et fabuleux. De base, c'est déjà très complet, mais parfois, on a envie d'aller plus vite, ou de faire des choses que git ne nous permet pas nativement.
Je publie cette astuces quelques jours avant les 20 ans de GIT, quelle invention remarquable ! Merci Linus !
Par exemple, je vous parle dans cet article de Commitizen, qui permet de se faire aider dans la rédaction des commits. Sauf que Commitizen s'utilise de base qu'avec la commande npx cz
, et que pour un nouveau collègue dans l'équipe, devoir faire npx cz
plutôt que git commit
, c'est pas très intuitif. Et c'est un euphémisme.
À la place, je préfère faire une commande avec git, dont je pourrais me rappeler, comme git cz
ou git commit-help
...
Alias comme raccourcis
À l'origine, les alias servent surtout à raccourcir des commandes longues :
alias.c | git commit |
alias.s | git status -s |
alias.co | git checkout |
Cela permet d'aller plus vite dans les commandes, même si ça perd en lisibilité.
Mais mieux que ça, les alias peuvent surtout nous permettre de compiler plusieurs commandes en une seule, ou exécuter d'autres commandes pas git, par exemple :
alias.ac | !git add . && git commit -m |
alias.undo | reset --soft HEAD~1 |
alias.cz | npx cz (Pour lancer commitizen, comme dans cet article) |
Le !
de l'alias ac
sert à préciser à git qu'il y aura plusieurs commandes, et donc l'utilisation de &&
, un truc qui n'existe pas dans git de base, et qu'on emprunte à bash.
Alias comme appel de petits programmes
Là où c'est intéressant, c'est qu'on peut également demander à git d'appeler fonctions, des fichiers bash ou autre, pour exécuter des codes un peu plus complexes.
Par exemple :
On remarque cette fois-ci que l'alias acp
appelle une fonction, qui exécute trois commandes, et qui récupère la suite de la commande pour le mettre dans le message de commit. Lors de l'exécution de la commande, le message de commit est récupéré, et donné à la place du $1
.
Local ou global ?
Il est possible de faire des alias globaux (stockés dans le fichier .gitconfig
à la racine de votre utilisateur) et des alias locaux (stockés dans le fichier ./.git/config
de votre projet en cours.
Si vous voulez accéder à vos alias sur tous vos projets, préférez les alias globaux. Si vous voulez partager ces alias avec votre équipe, on pourrait imaginer préférer les alias locaux. Attention toutefois, le dossier .git
de votre projet n'étant pas envoyé sur git, il faudra que chaque dev se fasse ses alias ou qu'on crée un script qui s'exécute avec npm install
par exemple, pour ajouter les alias à ce moment-là.
Dans tous les cas, lorsque vous faites une commande git alias
`, git cherchera aux deux endroits s'il trouve votre alias.
Et s'il est redondant ?
Si vous avez le même alias dans votre fichier local et global, ce sera le local qui sera lu.
Quelques exemples
Voici quelques alias que j'utilise régulièrement. Je ne suis pas très fan des raccourcis illisibles, et je préfère taper les commandes en entier mais savoir ce que je fais, plutôt que d'appeler des raccourcis qui font je ne sais plus trop quoi parce que ça fait longtemps que j'ai fait mes alias.
Quelques exceptions toutefois, comme git ac
ou git acz
parce que je les utilise tout le temps.
Le reste du temps j'utilise des alias plus complexes, qui réalisent des actions que je ne peux pas faire de base avec git.
Git Optimize
Inspiré de ça, j'aime bien cet alias, qui vient faire en une commande des choses que je ne connaissais pas du tout avant, et qui ont pourtant un intérêt certain, surtout sur des projets qui ont mille reprises.
Cet alias permet de retirer du projet les objets orphelins, qui ne sont plus accessibles par aucun lien avec une branche, un tag, ... Ainsi que leur référence dans le journal des références (reflog), puis reconditionne les objets Git pour optimiser l'espace disque et améliorer les performances. Il optimise donc le dépôt Git en effectuant un nettoyage complet et une re-compression des données.
Git Log en mieux
Inspiré de ça, ces alias me permettent de mettre joliment en forme mes logs pour voir plus clairement mon historique. De base, git embarque des commandes qui permettent de faire de belles choses, comme git log --graph --all --oneline --decorate
. C'est quand même plus pratique d'écrire git graph
pour faire la même chose non ?
Qui a participé au dépôt ?
Un peu comme les logs, il est possible de savoir qui a participé au dépôt, et pour combien de commits. Voici mon alias :
Comment se rappeler de ses alias ?
Au bout d'un moment, la liste de mes alias s'allongeant, m'est venue la question suivante : comment garder en mémoire mes alias, comment je dois m'en servir, étant donné qu'ils ne sont pas dans la doc de git ? C'est galère si je dois retourner dans mon .gitconfig
à chaque fois que je veux retrouver comment utiliser tel ou tel alias, et comment il faut s'en servir...
J'ai donc écrit un alias particulier qui me permet de lister mes alias. Tant qu'à faire, j'ai également ajouté, pour chaque alias, une information d'usage et un commentaire.

Et comme ça devenait compliqué de créer des alias qui avaient la même mise en forme, j'ai aussi créé un alias pour créer pour moi des alias. Et les mettre à jour. Et les supprimer. La totale. Je ne suis pas peu fier ! 😇

Comme tout ça est un peu complexe, j'ai créé des fichiers bash, qui sont appelés par des alias. Tout le code est hébergé sur gitlab, si vous voulez mettre cela en place vous aussi.
Pour aller plus loin...
- Retrouvez tous mes alias ici : https://gitlab.com/unsiteavous/gitconfig
- Vous pouvez retrouver une longue liste d'exemples d'alias sur ce site : https://www.gitalias.com/