Bloc-note d'un développeur web
Dans : Développement Web
30 déc 2009Les alias sont des raccourcis vers des commandes de Git. Fini les répétitions et autres saisies de commandes rébarbatives ! Pour ajouter de nouveaux alias, créez ou éditez la section [alias] de l’un des fichiers qui suivent (voir les exemples du billet pour avoir une information sur la syntaxe) :
~/.gitconfig pour en bénéficier dans tous vos dépôts..git/config d’un projet pour restreindre son accès à cet unique projet.Il est également possible de recourir à la commande git config :
$ git config --global alias.st 'status'
Ici, la commande git st devient un alias de git status.
Note : supprimer le flag --global va ajouter l’alias dans le scope du projet courant.
Voici les alias que j’utilise dans le scope global, en provenance donc de mon fichier ~/.gitconfig :
[alias]
amend = commit --amend
st = status
who = shortlog -sne
oneline = log --pretty=oneline --abbrev-commit --graph
changes = diff --name-status
dic = diff --cached
diffstat = diff --stat
svnpull = svn rebase
svnpush = svn dcommit
lc = !git oneline ORIG_HEAD.. --stat --no-merges
addm = !git ls-files -m | xargs git-add && git status
addu = !git ls-files -o --exclude-standard | xargs git-add && git status
rmm = !git ls-files -d | xargs git-rm && git status
mate = !mate `git ls-files -m`
mateall = !mate `git ls-files -m -o --exclude-standard`
[alias]
st = status
df = diff
co = checkout
ci = commit
br = branch
svnpull = svn rebase
svnpush = svn dcommit
Attention : la commande git checkout n’a pas la même utilité dans Git que dans Subversion !
Le flag --soft va conserver les modifications dans le répertoire de travail.
[alias]
undo = git reset --soft HEAD^
Important : nous travaillons ici en local. Il est malvenu d’annuler un commit sur le dépôt distant (désynchro, arbre cassé, etc). On assume ses erreurs
[alias]
amend = commit --amend
[alias]
changes = diff --name-status
dic = diff --cached
diffstat = diff --stat
[alias]
oneline = log --pretty=oneline --abbrev-commit --graph
[alias]
lc = !git oneline ORIG_HEAD.. --stat --no-merges
Les alias qui suivent vont lister les fichiers d’un certain type pour les ajouter à l’index avant commit. J’affiche ensuite l’état du projet pour valider qu’aucune erreur ne s’est produite.
On peut donc chaîner les commandes à condition de préfixer l’alias par un point d’exclamation !.
[alias]
addm = !git ls-files -m | xargs git-add && git status # ajouter les fichiers modifiés.
addu = !git ls-files -o --exclude-standard | xargs git-add && git status # ajouter les fichiers inconnus.
rmm = !git ls-files -d | xargs git-rm && git status # supprimer les fichiers marqués
# comme effacés.
Pratique pour reprendre son travail là où l’avait arrêté (poke Jérémy Lecour), git mate permet d’ouvrir dans mon éditeur de code préféré les fichiers modifiés depuis le dernier commit.
L’alias git mateall tiendra compte des fichiers inconnus de l’index du projet.
[alias]
mate = !mate `git ls-files -m`
mateall = !mate `git ls-files -m -o --exclude-standard`
Faudrait vraiment que je me penche sur Git un de ces jours. Faut dire que SVN me va très bien pour l’instant. Mais j’entends tellement de gens dire que Git est si puissant comparé à SVN.