Comment imprimer une liste de mes alias git, c'est-à-dire quelque chose d'analogue à la alias
commande bash ?
Comment imprimer une liste de mes alias git, c'est-à-dire quelque chose d'analogue à la alias
commande bash ?
Réponses:
Cette réponse s'appuie sur la réponse de Johnny . Cela s'applique si vous n'utilisez pas git-alias
degit-extras
.
Sous Linux, exécutez une fois:
git config --global alias.alias "! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /"
Cela créera un alias git permanent nommé alias
qui sera stocké dans votre ~/.gitconfig
fichier. Son utilisation listera tous vos alias git, dans presque le même format que dans le ~/.gitconfig
fichier. Pour l'utiliser, tapez:
$ git alias
loga = log --graph --decorate --name-status --all
alias = ! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /
Les considérations suivantes s'appliquent:
Pour empêcher l'alias alias
d'être répertorié comme ci-dessus, ajoutez-le | grep -v ^'alias '
juste avant le guillemet double de fermeture. Je ne recommande pas cela afin que les utilisateurs n'oublient pas que la commande alias
n'est qu'un alias et n'est pas une fonctionnalité de git.
Pour trier les alias répertoriés, ajoutez | sort
juste avant le guillemet double de fermeture. Vous pouvez également conserver les alias ~/.gitconfig
triés.
Pour ajouter l'alias en tant qu'alias à l'échelle du système, remplacez --global
(pour l'utilisateur actuel) par --system
(pour tous les utilisateurs). Cela va généralement dans le /etc/gitconfig
fichier.
alias.
début de chaque ligne
fatal: bad config
. La solution de Git-extra fonctionne pour moi cependant: github.com/tj/git-extras/blob/master/bin/git-alias
git config --global alias.alias "! git config --get-regexp ^alias\."
. Alternativement, assurez git version
-vous d'avoir une version actuelle de git.
$ git config --get-regexp alias
'^alias\.'
git config -e
, puis utilisez vos yeux pour trouver la [alias]
section. Mais les fans de git semblent toujours
git config -e
modifie le .git/config
fichier uniquement. Mais la plupart de mes alias sont définis dans le monde ~/.gitconfig
.
git config --global alias.aliases config --get-regexp '^alias\.'"
... et ensuitegit aliases
"
quelque part
J'ai créé un alias git appelé (assez étrangement) alias
dans ce but précis ... pratique de temps en temps si vous utilisez suffisamment l'aliasing ...
$ git config --global alias.alias "config --get-regexp ^alias\."
Notez que l'expression régulière s'assure que la ligne commence par alias.
.
--system
plutôt --global
que quelque chose comme ça soit plus utile au niveau du système, pas au niveau de l'utilisateur.
alias = config --get-regexp ^alias\\.
.
git config --global alias.alias "!git config --get-regexp ^alias\. | grep -Po '(?<=alias\.)\S*' | sort"
Une autre alternative (purement quelque chose que je trouve facile à retenir):
git config --list | grep alias
alias
alias une fois, puis oublier que vous l'avez même créé.
-l
comme raccourci pratique pour --list
mais j'aime l'idée de créer un alias pour répertorier les alias.
git config --list | grep -E '^alias'
Ai-je entendu «bash scripting»? ;)
À propos de la partie `` non nécessaire '' dans un commentaire ci-dessus, j'ai essentiellement créé une page de manuel comme aperçu pour mes alias. Pourquoi tout ce tapage? N'est-ce pas exagéré?
Continuer à lire...
J'ai mis les commandes comme ceci dans mon .gitconfig, séparées comme TAB=TAB:
[alias]
alias1 = foo -x -y --z-option
alias2 = bar -y --z-option --set-something
et simplement défini un autre alias pour grep la TAB=partie des alias définis. (Toutes les autres options n'ont pas d'onglets avant et après le '=' dans leur définition, juste des espaces.)
Les commentaires non ajoutés à un alias ont également une TAB=====annexe, ils sont donc affichés après la grepping.
Pour une meilleure visualisation, je redirige la sortie grep vers moins, comme ceci:
#.gitconfig
[alias]
# use 'git h <command>' for help, use 'git la' to list aliases =====
h = help #... <git-command-in-question>
la = "!grep '\t=' ~/.gitconfig | less"
La \t=
partie ' ' correspond TAB=.
Pour avoir une meilleure vue d'ensemble de mes alias et depuis que j'utilise la console bash, j'ai coloré la sortie avec les couleurs des terminaux:
la = "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"
Fondamentalement, la même chose que ci-dessus, seule l' utilisation de sed est ajoutée pour obtenir les codes de couleur dans la sortie.
le -R
drapeau de moins est nécessaire pour obtenir les couleurs affichées en moins.
(J'ai récemment découvert que les longues commandes avec une barre de défilement sous leur fenêtre ne s'affichent pas correctement sur les appareils mobiles: leur texte est coupé et la barre de défilement est simplement manquante. Cela pourrait être le cas avec le dernier extrait de code ici, conservez-le dans l'esprit lorsque vous regardez des extraits de code ici lors de vos déplacements.)
J'ai un demi-mille d'alias, adaptés à mes besoins.
Certains d’entre eux changent aussi avec le temps , donc après tout, la meilleure idée d'avoir une liste à jour à portée de main est d'analyser le .gitconfig.
Un **** court **** extrait de mes alias .gitconfig:
# choose =====
a = add #...
aa = add .
ai = add -i
# unchoose =====
rm = rm -r #... unversion and delete
rmc = rm -r --cached #... unversion, but leave in working copy
# do =====
c = commit -m #...
fc = commit -am "fastcommit"
ca = commit -am #...
mc = commit # think 'message-commit'
mca = commit -a
cam = commit --amend -C HEAD # update last commit
# undo =====
r = reset --hard HEAD
rv = revert HEAD
Dans mes postes de travail Linux ou Mac, il existe également d'autres alias dans les .bashrc, un peu comme:
#.bashrc
alias g="git"
alias gh="git h"
alias gla="git la"
function gc { git c "$*" } # this is handy, just type 'gc this is my commitmessage' at prompt
De cette façon, pas besoin de taper git help submodule
, pas besoin git h submodule
, justegh submodule
c'est tout ce qui est nécessaire pour obtenir l'aide. Ce ne sont que quelques caractères, mais à quelle fréquence les tapez-vous?
J'utilise tous les éléments suivants, bien sûr uniquement avec des raccourcis ...
C'était juste du haut de ma tête.
Je dois souvent utiliser git sans gui, car la plupart des commandes git ne sont pas implémentées correctement dans aucune des interfaces graphiques. Mais chaque fois que je les mets en service, c'est surtout de la même manière.
Sur la partie `` non implémentée '' mentionnée dans le dernier paragraphe:
Je n'ai pas encore trouvé quelque chose qui se compare à cela dans une interface graphique:
sba = show-branch --color=always -a --more=10 --no-name
- affiche toutes les branches locales et distantes ainsi que les
ccm = "!git reset --soft HEAD~ && git commit"
validations qu'elles contiennent - change le dernier message de validation
D'un point de vue plus simple: à
quelle fréquence tapez-vous git add .
ou git commit -am "..."
? Sans compter même le reste ...
Faire fonctionner les choses comme git aa
ou git ca "..."
dans Windows,
ou avec des alias bash gaa
/ g aa
ou gca "..."
/ g ca "..."
sous Linux et sur Mac ...
Pour mes besoins, cela semblait une chose intelligente à faire, d'adapter des commandes git comme celle-ci ...
... et pour une utilisation plus facile, je me suis juste aidé pour les commandes moins utilisées, donc je n'ai pas à consulter les pages de manuel à chaque fois. Les commandes sont prédéfinies et les rechercher est aussi simple que possible.
Je veux dire, nous sommes des programmeurs après tout? Faire fonctionner les choses comme nous en avons besoin est notre travail.
Voici une capture d'écran supplémentaire, cela fonctionne sous Windows:
la = "!grep '\t=' ~/.gitconfig | less"
TAB
précédent à chaque fois =
? Avec des espaces, cela ne fonctionnera pas. J'avais moi-même des espaces dans mes fenêtres .gitconfig
, une fois que je les ai remplacées par un seul tabstop, cmd.exe se comporte comme prévu.
Comme d'autres réponses l'ont mentionné, git config -l
répertorie tous les détails de votre configuration à partir de votre fichier de configuration. Voici un exemple partiel de cette sortie pour ma configuration:
...
alias.force=push -f
alias.wd=diff --color-words
alias.shove=push -f
alias.gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
alias.branches=!git remote show origin | grep \w*\s*(new^|tracked) -E
core.repositoryformatversion=0
core.filemode=false
core.bare=false
...
Nous pouvons donc extraire les lignes d'alias en utilisant git config -l | grep alias
:
alias.force=push -f
alias.wd=diff --color-words
alias.shove=push -f
alias.gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
alias.branches=!git remote show origin | grep \w*\s*(new^|tracked) -E
Nous pouvons rendre cela plus joli en effaçant simplement cut
la alias.
partie de chaque ligne, nous laissant avec cette commande:
git config -l | grep alias | cut -c 7-
Qui imprime:
force=push -f
wd=diff --color-words
shove=push -f
gitignore=!git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
branches=!git remote show origin | grep \w*\s*(new^|tracked) -E
Enfin, n'oubliez pas d'ajouter ceci comme alias:
git config --global alias.la "!git config -l | grep alias | cut -c 7-"
Prendre plaisir!
Pour les fenêtres:
git config --list | findstr "alias"
J'ai mentionné en juin 2018 avec " list list - les commandes git les plus utilisées " le Git 2.18 "use --list-cmds=alias
( commit 3301d36 )", que carej rapporte dans sa réponse .
git --list-cmds=alias
En plus de cela ou de git config --get-regexp alias
, vous pouvez combiner sa sortie avec git help
, dont la sortie changera avec Git 2.14.x / 2.15:
"
git help co
" dit maintenant "co is aliased to ...
", pas "git co is
".
Voir commit b3a8076 (12 sept. 2017) par Kaartic Sivaraam ( sivaraam
) .
(Fusionné par Junio C Hamano - gitster
- dans commit 5079cc8 , 25 sept. 2017)
help
: changer un message pour être plus précisLorsque l'utilisateur essaie d'utiliser l'
--help
option ' ' sur une commande aliasée, les informations sur l'alias sont imprimées comme indiqué ci-dessous:
$ git co --help
`git co' is aliased to `checkout'
Cela ne semble pas correct, car l'utilisateur a uniquement un alias '
co
' et non 'git co
'.
Cela peut même être incorrect dans les cas où l'utilisateur a utilisé un alias comme 'tgit
'.
$ tgit co --help
`git co' is aliased to `checkout'
Ajoutez à votre .gitconfig
sous [alias]
:
aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"
Ensuite, vous pouvez faire
git aliases
- afficher TOUS les aliasgit aliases commit
- uniquement les alias contenant "commit"J'utilise cet alias dans mon global~/.gitconfig
# ~/.gitconfig
[alias]
aliases = !git config --get-regexp ^alias\\. | sed -e s/^alias.// -e s/\\ /\\ $(printf \"\\043\")--\\>\\ / | column -t -s $(printf \"\\043\") | sort -k 1
pour produire la sortie suivante
$ git aliases
aliases --> !git config --get-regexp ^alias\. | sed -e s/^alias.// -e s/\ /\ $(printf "\043")--\>\ / | column -t -s $(printf "\043") | sort -k 1
ci --> commit -v
cim --> commit -m
co --> checkout
logg --> log --graph --decorate --oneline
pl --> pull
st --> status
... --> ...
( Remarque: cela fonctionne pour moi dans git bash sous Windows . Pour d'autres terminaux, vous devrez peut-être adapter l'échappement. )
!git config --get-regexp ^alias\\.
imprime toutes les lignes de git config commençant par alias.
sed -e s/^alias.//
supprime alias.
de la lignesed -e s/\\ /\\ $(printf \"\\043\")--\\>\\ /
remplace la première occurrence d'un espace par \\ $(printf \"\\043\")--\\>
(qui correspond à #-->
).column -t -s $(printf \"\\043\")
formate toutes les lignes dans un tableau à colonnes régulièrement espacées. Le caractère $(printf \"\\043\")
évalué #
est utilisé comme séparateur.sort -k 1
trie toutes les lignes en fonction de la valeur de la première colonne$ (printf \ "\ 043 \")
Cela imprime simplement le caractère #
(hex 043) qui est utilisé pour la séparation des colonnes. J'utilise ce petit hack pour que l' aliases
alias lui-même ne contienne pas littéralement le #
personnage. Sinon, il remplacerait ces #
caractères lors de l'impression.
Remarque : remplacez-le par un autre caractère si vous avez besoin d'alias avec des #
signes littéraux .
Il y a une fonction intégrée ... essayez
$ __git_aliases
liste tous les alias :)
$
indique l'invite de terminal Linux typique. Tapez le reste de cette ligne dans un tel terminal et appuyez ENTER
et sortez une liste de vos alias. Fonctionne à la fois sur Linux et Windows (git bash), car il est intégré à git. (C'est probablement une fonction que git utilise en interne pour résoudre les alias lorsqu'ils sont utilisés sur la ligne de commande.)
Depuis git 2.18, vous pouvez utiliser git --list-cmds=alias
Encore un autre git
alias (appelé alias
) qui affiche les alias git: ajoutez ce qui suit à votre [alias]
section gitconfig :
[alias]
# lists aliases matching a regular expression
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
Exemple d'utilisation, donnant le nom d'alias complet (correspond exactement au nom d'alias: ie, ^foobar$
), et affiche simplement la valeur:
$ git alias st
alias.st status -s
$ git alias dif
alias.dif diff
Ou, donnez regexp, qui affiche tous les alias et valeurs correspondants:
$ git alias 'dif.*'
alias.dif diff
alias.difs diff --staged
alias.difh diff HEAD
alias.difr diff @{u}
alias.difl diff --name-only
$ git alias '.*ing'
alias.incoming !git remote update -p; git log ..@{u}
alias.outgoing log @{u}..
Avertissements: citez l'expression rationnelle pour empêcher l'expansion du shell en tant que glob, bien que ce ne soit pas techniquement nécessaire si / quand aucun fichier ne correspond au modèle. Aussi: toute expression rationnelle est très bien, sauf que ^
(début de modèle) et $
(fin de modèle) ne peuvent pas être utilisés; ils sont implicites. Suppose que vous n'utilisez pas git-alias
degit-extras
.
De plus, évidemment, vos alias seront différents; ce ne sont que quelques-uns que j'ai configurés. (Vous les trouverez peut-être aussi utiles.)