Git/alias
Git est un outil puissant avec beaucoup d'options utiles. Saviez-vous que vous pouvez créer un alias pour vos commandes ou pour un ensemble d'options ? Vous n'aurez ainsi plus à écrire de longues lignes de commandes du shell. Voici une collection de quelques alias utiles.
Déclarer un alias
Dans votre ~/.gitconfig
ajoutez une section [alias]
.
Chaque ligne suit le format <tabulation>clé = valeur
.
Voici un extrait de code de la section [alias]
d'un fichier .gitconfig
[alias]
short-name = actual (long?) command
Les alias
Si vous voulez obtenir le tout en une seule passe, voici une collection de tous les alias de cette page :
[alias]
amend = commit --amend -a
br = branch
branch-cleanup = "!f() { git branch --merged ${1-master} | grep -v " ${1-master}$" | xargs -n 1 git branch -d; }; f"
co = checkout
ds = diff --staged
di = diff
fetchall = fetch -v --all
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(cyan)<%an>%Creset' --abbrev-commit --date=relative
l = ! git lg -n25
log-me = !UN=$(git config user.name)&& git log --author="\"$UN\"" --pretty=format:'%h %cd %s' --date=short
log-nice = log --graph --decorate --pretty=oneline --abbrev-commit
panic = !tar cvf ../git_panic.tar *
st = status
wdiff = diff --word-diff=plain
amend
[alias]
amend = commit --amend -a
- Exemple
git amend
Avec Gerrit il est possible que vous ayez à modifier un ensemble de corrections. Cela signifie généralement qu'il faut corriger les fichiers et ensuite modifier le message de validation précédent. Le flux de travail ressemblerait à :
$ git review -d 1234 // gerrit changeset id <edit files> $ git add <files> $ git commit --amend <update commit-msg>
Si vous avez seulement changé des fichiers (sans en ajouter de nouveaux), les deux dernières commandes peuvent être regroupées en utilisant git commit --amend -a
.
br
[alias]
br = branch
- Exemple
git br foo --track origin/foo
git br -D some/old/branch
branch-cleanup
[alias]
branch-cleanup = "!f() { git branch --merged ${1-master} | grep -v " ${1-master}$" | xargs -n 1 git branch -d; }; f"
Ceci supprime toutes les références des branches qui ont été complètement fusionnées dans le master (ou toute autre branche que vous aurez spécifiée).
co
[alias]
co = checkout
- Exemple
git co master
ds
[alias]
ds = diff --staged
- Exemple
git ds
Un git diff
à plat montre la différence entre la copie de travail (non mise en réserve) et la copie de travail mise en réserve.
Dans la plupart des cas, c'est la même chose que le diff entre la copie de travail et la dernière version validée de la branche actuelle (HEAD).
Cependant, si vous avez déjà fait git add
et apporté ensuite quelques modifications supplémentaires, alors les modifications au moment du dernier git add
ne sont plus affichées dans git diff
.
Utiliser git diff --staged
pour créer un diff entre les modifications déjà en réserve (mais pas encore validées) et le HEAD actuel.
di
[alias]
di = diff
- Exemple
git di
fetchall
[alias]
fetchall = fetch -v --all
- Exemple
git fetchall
Dans ce cas, origin
et gerrit
sont les mêmes, ce qui est vrai sur la capture d'écran ci-dessus.
git remote update
lg
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(cyan)<%an>%Creset' --abbrev-commit --date=relative
l = ! git lg -n25
- Exemple
git lg
(par défaut, avec la mise en page) ougit l
(les derniers 25 uniquement)
log-me
Le nom de l'auteur est sensible à la casse.
[alias]
log-me = !UN=$(git config user.name)&& git log --author="\"$UN\"" --pretty=format:'%h %cd %s' --date=short
- Exemple
git log-me -n20
log-nice
[alias]
log-nice = log --graph --decorate --pretty=oneline --abbrev-commit
- Exemple
git log-nice -n20
panic
[alias]
panic = !tar cvf ../git_panic.tar *
Il est parfois possible de ne pas avoir réalisé les bonnes opérations dans git. Vous pensez avoir perdu vos validations, ou quelques chose de similaire. Il y a de fortes chances que les informations soient toujours là, donc la meilleure façon d'agir est de faire une sauvegarde immédiate, avant de risquer de perdre des données.
st
[alias]
st = status
- Exemple
git st
wdiff
[alias]
wdiff = diff --word-diff=plain
- Exemple
git wdiff