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 ?

336
demandé sur A-B-B 2011-08-15 18:45:50

14 réponses

$ git config --get-regexp alias
386
répondu William Pursell 2012-05-09 14:04:35

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. .

122
répondu johnny 2014-01-15 12:20:21

une autre alternative (purement quelque chose que je trouve facile à retenir):

git config --list | grep alias

68
répondu Rimian 2012-11-16 23:51:35

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 commande alias 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 .

50
répondu A-B-B 2017-05-23 12:10:44

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:

script working with cmd.exe

BONUS: si vous êtes sous linux ou mac, les pages de manuel colorisées peuvent vous aider beaucoup:

pages de manuel colorisées

23
répondu sjas 2017-03-20 10:18:27

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!

13
répondu Anubian Noob 2015-07-10 14:41:33

utilisant git var et filtrant uniquement ceux qui commencent par alias :

git var -l | grep -e "^alias"
12
répondu mkobit 2016-06-21 14:51:09

pour windows:

git config --list | findstr "alias"
8
répondu 176coding 2016-04-07 07:35:04

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"
8
répondu Tom Hale 2016-09-13 09:01:13

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

  1. !git config --get-regexp ^alias\. imprime toutes les lignes de git config qui commencent par alias.
  2. sed -e s/^alias.// supprime alias. de la ligne
  3. sed -e s/\ /\ $(printf \"\043\")--\>\ / remplace la première occurrence d'un espace par \ $(printf \"\043\")--\> (qui s'évalue à #--> ).
  4. 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.
  5. 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 # .

3
répondu Thomas 2018-02-09 01:02:00

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'
2
répondu cmcginty 2014-06-16 19:59:54

Il y a une fonction intégrée... essayez

$ __git_aliases

liste tous les alias:)

2
répondu vigo 2014-09-13 17:16:07

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.)

0
répondu michael 2017-02-08 23:11:30

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écis

lorsque 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 comme tgit ".

$ tgit co --help
`git co' is aliased to `checkout'
0
répondu VonC 2017-09-28 20:54:16