Recherche…
Alias simples
Il existe deux manières de créer des alias dans Git:
- avec le fichier
~/.gitconfig
:
[alias]
ci = commit
st = status
co = checkout
- avec la ligne de commande:
git config --global alias.ci "commit"
git config --global alias.st "status"
git config --global alias.co "checkout"
Une fois l'alias créé, tapez:
-
git ci
au lieu degit commit
, -
git st
au lieu degit status
, -
git co
au lieu degit checkout
.
Comme pour les commandes git standard, les alias peuvent être utilisés à côté des arguments. Par exemple:
git ci -m "Commit message..."
git co -b feature-42
List / search aliases existants
Vous pouvez lister les alias git existants en utilisant --get-regexp
:
$ git config --get-regexp '^alias\.'
Recherche d'alias
Pour rechercher des alias , ajoutez ce qui suit à votre .gitconfig
sous [alias]
:
aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
Ensuite vous pouvez:
-
git aliases
- affiche TOUS les alias -
git aliases commit
- uniquement les alias contenant "commit"
Alias avancés
Git vous permet d'utiliser des commandes non-git et une syntaxe sh
shell complète dans vos alias si vous les préfixez avec !
.
Dans votre fichier ~/.gitconfig
:
[alias]
temp = !git add -A && git commit -m "Temp"
Le fait que la syntaxe complète du shell soit disponible dans ces alias préfixés signifie également que vous pouvez utiliser des fonctions shell pour construire des alias plus complexes, tels que ceux qui utilisent des arguments de ligne de commande:
[alias]
ignore = "!f() { echo $1 >> .gitignore; }; f"
L'alias ci-dessus définit la fonction f
, puis l'exécute avec tous les arguments que vous transmettez à l'alias. Donc, lancer git ignore .tmp/
ajouterait .tmp/
à votre fichier .gitignore
.
En fait, ce modèle est si utile que Git définit pour vous les variables $1
, $2
, etc., vous n'avez donc même pas besoin de définir une fonction spéciale. (Mais gardez à l'esprit que Git ajoutera également les arguments de toute façon, même si vous y accédez via ces variables, vous pouvez donc ajouter une commande factice à la fin.)
Notez que les alias avec le préfixe avec !
De cette façon, ils sont exécutés à partir du répertoire racine de votre commande git, même si votre répertoire actuel est plus profond dans l'arborescence. Cela peut être un moyen utile d'exécuter une commande à partir de la racine sans avoir à y cd
explicitement.
[alias]
ignore = "! echo $1 >> .gitignore"
Ignorer temporairement les fichiers suivis
Pour marquer temporairement un fichier comme ignoré (fichier pass comme paramètre pour alias) - tapez:
unwatch = update-index --assume-unchanged
Pour recommencer le suivi du fichier - tapez:
watch = update-index --no-assume-unchanged
Pour répertorier tous les fichiers temporairement ignorés - tapez:
unwatched = "!git ls-files -v | grep '^[[:lower:]]'"
Pour effacer la liste non surveillée - tapez:
watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"
Exemple d'utilisation des alias:
git unwatch my_file.txt
git watch my_file.txt
git unwatched
git watchall
Afficher un joli journal avec un graphique de branche
[alias]
logp=log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
lg = log --graph --date-order --first-parent \
--pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
lgb = log --graph --date-order --branches --first-parent \
--pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
lga = log --graph --date-order --all \
--pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
Voici une explication des options et des espaces réservés utilisés dans le format --pretty
(une liste exhaustive est disponible avec le git help log
)
--graph - dessine l'arbre de validation
--date-order - utilise l'ordre d'horodatage de validation lorsque cela est possible
--first-parent - ne suit que le premier parent du noeud de fusion.
--branches - affiche toutes les branches locales (par défaut, seule la branche actuelle est affichée)
--all - affiche toutes les branches locales et distantes
% h - valeur de hachage pour commit (abrégé)
% ad - Cachet de date (auteur)
% an - Nom d'utilisateur auteur
% an - Nom d'utilisateur de validation
% C (auto) - pour utiliser les couleurs définies dans la section [color]
% Creset - pour réinitialiser la couleur
% d - --decorate (noms de branches et de tags)
% s - valide le message
% ad - date de l'auteur (suivra la directive --date) (et non la date du commiter)
% an - nom de l'auteur (peut être% cn pour le nom du commutateur)
Mise à jour du code tout en conservant un historique linéaire
Parfois, vous devez conserver un historique linéaire (sans branchement) de vos commits de code. Si vous travaillez sur une branche pendant un certain temps, cela peut être difficile si vous devez effectuer une git pull
régulière de git pull
car cela enregistrera une fusion avec l’amont.
[alias]
up = pull --rebase
Cela mettra à jour avec votre source en amont, puis réappliquera tout travail que vous n'avez pas poussé au-dessus de ce que vous avez abattu.
Utiliser:
git up
Voir quels fichiers sont ignorés par votre configuration .gitignore
[ alias ]
ignored = ! git ls-files --others --ignored --exclude-standard --directory \
&& git ls-files --others -i --exclude-standard
Affiche une ligne par fichier, vous pouvez donc grep (uniquement les répertoires):
$ git ignored | grep '/$'
.yardoc/
doc/
Ou compte:
~$ git ignored | wc -l
199811 # oops, my home directory is getting crowded
Dégager les fichiers mis en scène
Normalement, pour supprimer les fichiers à transférer à l'aide de la validation de git reset
, la reset
a beaucoup de fonctions en fonction des arguments fournis. Pour désinstaller complètement tous les fichiers mis en scène, nous pouvons utiliser des alias git pour créer un nouvel alias qui utilise la reset
mais nous n'avons plus besoin de nous souvenir de fournir les arguments corrects à reset
.
git config --global alias.unstage "reset --"
Maintenant, chaque fois que vous voulez désinstaller des fichiers de scène, tapez git unstage
et vous êtes git unstage
à partir.