Liste des alias Git
Comment puis-je imprimer une liste de mes alias git, c'est-à-dire quelque chose d'analogue à la commande bash alias
?
14 réponses
j'ai créé un pseudonyme git appelé (étrangement) alias
dans ce but précis... pratique de temps en temps si vous utilisez aliasing assez...
$ git config --global alias.alias "config --get-regexp ^alias\."
Note, le regex s'assure que la ligne commence par alias.
.
une autre alternative (purement quelque chose que je trouve facile à retenir):
git config --list | grep alias
Cette réponse s'appuie sur la réponse par johnny . Il s'applique si vous n'utilisez pas git-alias
de git-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 fichier ~/.gitconfig
. L'utiliser va lister tous vos pseudonymes git, dans presque le même format comme ils sont dans le "151950920 de 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 facultatives suivantes s'appliquent:
-
pour éviter que l'alias
alias
ne soit listé comme ci-dessus, ajoutez| grep -v ^'alias '
juste avant le double devis de clôture. Je ne le recommande pas pour les utilisateurs de Linux afin qu'ils n'oublient pas que la commandealias
n'est qu'un alias et n'est pas une fonctionnalité de git. -
pour trier les alias énumérés, ajoutez
| sort
juste avant la fin du double devis. Alternativement, vous pouvez garder les alias dans~/.gitconfig
triés. -
pour ajouter l'alias en tant qu'alias système, remplacer
--global
(pour utilisateur courant) par--system
(pour tous les utilisateurs). Cela va typiquement dans le fichier/etc/gitconfig
.
les travaux suivants sous Linux, MacOSX et Windows (avec msysgit).
Utiliser git la pour afficher les alias .gitconfig
ai-je entendu "bash scripting"? ;)
à propos de la partie "pas nécessaire" dans un commentaire ci-dessus, j'ai essentiellement créé une page de manuel comme overview pour mes alias. Pourquoi toute cette agitation? N'est-ce pas complète overkill?
lisez la suite...
I ont mis les commandes comme ceci dans mon .gitconfig, séparés comme ONGLET = ONGLET :
[alias]
alias1 = foo -x -y --z-option
alias2 = bar -y --z-option --set-something
et a simplement défini un autre alias pour grep L'onglet = une 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 annexés à un alias ont aussi un onglet = = = = = en annexe, de sorte qu'ils sont affichés après grapping.
pour une meilleure vision, je pipes la sortie grep en moins, comme ceci:
version de base: (noir/blanc)
#.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"
L ' \t=
' partie correspond à ONGLET = .
pour avoir une meilleure vue d'ensemble des alias que j'AI, et puisque j'utilise la console bash, j'ai coloré la sortie avec des couleurs de terminal:
- tous " = " sont imprimés en rouge
- tous les '#' sont imprimés en vert
avancé version: (coloré)
la = "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"
fondamentalement le même que ci-dessus, juste sed usage est ajouté pour obtenir les codes de couleur dans la sortie.
le drapeau -R
de moins est nécessaire pour obtenir les couleurs indiquées en moins.
(j'ai récemment découvert, que les commandes longues avec un scrollbar sous leur fenêtre ne sont pas affichées correctement sur les appareils mobiles: ils texte est coupé et le barre de défilement est tout simplement absent. C'est peut-être le cas avec le dernier code snippet ici, gardez cela à l'esprit lorsque vous regardez les snippets de code ici pendant que vous êtes en déplacement.)
Pourquoi faire fonctionner une telle magie?
j'ai un demi-mile d'alias, adaptés à mes besoins.
Aussi certains d'entre eux changement dans le temps , donc après tout la meilleure idée d'avoir un la mise à jour de la liste à portée de main est l'analyse de la .gitconfig.
Un ******** extrait de mon .gitconfig alias:
# 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 stations de travail linux ou mac existe aussi d'autres alias dans le .
#.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
ainsi pas besoin de taper git help submodule
, pas besoin de git h submodule
, juste gh submodule
est tout ce qui est nécessaire pour obtenir de l'aide. Ce ne sont que quelques caractères, mais à quelle fréquence les Tapez-vous?
j'utilise tout ce qui suit, bien sûr seulement avec des raccourcis...
- ajouter
- commit
- commit -- amend
- reset -- hard HEAD
- push
- fetch
- rebase
- caisse
- branche
- show-branche (dans beaucoup de variations)
- shortlog
- refrog
- diff (en variations)
- journal (dans beaucoup de variations)
- statut
- show
- notes
- ...
C'était juste du haut de ma tête.
je dois souvent utiliser git sans gui, car beaucoup de git les commandes ne sont pas correctement implémentées dans les interfaces graphiques. Mais chaque fois que je les utilise, c'est généralement de la même manière.
sur la partie "non mis en œuvre" mentionnée au dernier paragraphe:
Je dois encore trouver quelque chose qui se compare à cela dans une interface graphique:
sba = show-branch --color=always -a --more=10 --no-name
- afficher toutes les branches locales et éloignées ainsi que les commits qu'elles contiennent
ccm = "!git reset --soft HEAD~ && git commit"
- changer le dernier message de propagation
D'un point de vue plus simple:
À quelle fréquence Tapez-vous git add .
ou git commit -am "..."
? Sans compter le reste...
Obtenir des choses à travailler comme git aa
ou git ca "..."
dans les fenêtres,
ou avec les alias bash gaa
/ g aa
ou gca "..."
/ g ca "..."
sous linux et sur mac...
pour répondre à mes besoins, il me semblait intelligent d'adapter des commandes git comme celle-ci...
... et pour une utilisation plus facile, je viens de m'aider 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 facile que possible.
je veux dire, nous sommes programmeurs après tout? Faire fonctionner les choses comme on en a besoin est notre travail.
Voici une capture d'écran supplémentaires, cela fonctionne sous Windows:
BONUS: si vous êtes sous linux ou mac, les pages de manuel colorisées peuvent vous aider beaucoup:
comme d'autres réponses l'ont mentionné, git config -l
liste 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
...
pour que nous puissions récupérer 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 cut
sortant la partie alias.
de chaque ligne, nous laissant avec cette commande:
git config -l | grep alias | cut -c 7-
qui gravure:
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-"
Profitez-en!
rechercher ou afficher tous les alias
ajouter à votre .gitconfig
sous [alias]
:
aliases = !git config --list | grep ^alias\. | cut -c 7- | grep -Ei --color \"\" "#"
, Alors vous pouvez faire
-
git aliases
- afficher tous les alias -
git aliases commit
- seuls 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 le suivant la sortie
$ git aliases
aliases --> !git config --get-regexp ^alias\. | sed -e s/^alias.// -e s/\ /\ $(printf "3")--\>\ / | column -t -s $(printf "3") | sort -k 1
ci --> commit -v
cim --> commit -m
co --> checkout
logg --> log --graph --decorate --oneline
pl --> pull
st --> status
... --> ...
( Note: cela fonctionne pour moi dans Git bash sur Windows . Pour les autres terminaux vous faudra peut-être adapter échapper. )
explication
-
!git config --get-regexp ^alias\.
imprime toutes les lignes de git config qui commencent paralias.
-
sed -e s/^alias.//
supprimealias.
de la ligne -
sed -e s/\ /\ $(printf \"\043\")--\>\ /
remplace la première occurrence d'un espace par\ $(printf \"\043\")--\>
(qui s'évalue à#-->
). -
column -t -s $(printf \"\043\")
formate toutes les lignes dans un tableau à colonnes régulièrement espacées. Le caractère$(printf \"\043\")
qui évalue à#
est utilisé comme séparateur. -
sort -k 1
trie toutes les lignes en fonction de la valeur dans la première colonne
$(printf \"\043\")
il suffit d'imprimer le caractère #
(hex 043) qui est utilisé pour la séparation des colonnes. J'utilise ce petit piratage de sorte que le aliases
alias lui-même ne contient pas littéralement le caractère #
. Sinon, il remplacerait ceux #
caractères lors de l'impression.
Note : changez ce caractère si vous avez besoin d'alias avec les signes littéraux #
.
Si vous connaissez le nom de l'alias, vous pouvez utiliser le bouton --help
pour le décrire. Par exemple:
$ git sa --help
`git sa' is aliased to `stash'
$ git a --help
`git a' is aliased to `add'
Il y a une fonction intégrée... essayez
$ __git_aliases
liste tous les alias:)
encore un autre git
alias (appelé alias
) qui imprime les alias git: ajouter ce qui suit à votre gitconfig [alias]
section:
[alias]
# lists aliases matching a regular expression
alias = "!f() { git config --get-regexp "^alias.$" ; }; f"
exemple d'usage, donnant le nom complet de l'alias (correspond exactement au nom de l'alias: i.e., ^foobar$
), et affiche simplement la valeur:
$ git alias st
alias.st status -s
$ git alias dif
alias.dif diff
Ou, donner regexp, qui montre tous les alias et les valeurs de l':
$ 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}..
mises en garde: citer le regexp à empêcher l'expansion, comme une boule, bien qu'il n'est pas techniquement nécessaire si aucun fichier correspondant au modèle. En outre: tout regexp est très bien, sauf ^
(pattern start) et $
(pattern end) ne peuvent pas être utilisés; ils sont implicites. Suppose que vous n'utilisez pas git-alias
de git-extras
.
aussi, évidemment vos alias seront différents; ce ne sont que quelques-uns que j'ai configurés. (Peut-être les trouverez-vous utiles, aussi.)
en plus de git config --get-regexp alias
, vous pouvez combiner sa sortie avec git help
, dont la sortie va changer avec Git 2.14.x / 2.15:
"
git help co
"maintenant, dit"co is aliased to ...
, " non "git co is
".
Voir commettre b3a8076 (12 septembre 2017) par Kaartic Sivaraam ( sivaraam
) .
(fusionné par Junio C Hamano -- gitster
-- dans commettre 5079cc8 , le 25 septembre 2017)
help
: changer un message pour être plus précislorsque l'utilisateur essaie d'utiliser l'option
--help
'sur une commande aliasée, les informations concernant l'alias sont imprimées comme suit:
$ git co --help
`git co' is aliased to `checkout'
cela ne semble pas correct comme l'Utilisateur a seulement alias '
co
' et non 'git co
'.
Cela pourrait même être incorrect dans les cas où l'Utilisateur a utilisé un alias commetgit
".
$ tgit co --help
`git co' is aliased to `checkout'