web-dev-qa-db-fra.com

Liste des alias Git

Comment imprimer une liste de mes alias git, c'est-à-dire quelque chose d'analogue à la commande bash alias?

388
ma11hew28

Cette réponse s'appuie sur le réponse par johnny . Cela s'applique si vous n'utilisez pas git-alias à partir de git-extras .

Sous Linux, lancez 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_. Son utilisation listera tous vos alias git, presque dans le même format que dans le fichier _~/.gitconfig_. 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 répertorié comme ci-dessus, ajoutez _| grep -v ^'alias '_ juste avant le guillemet double. Je ne le recommande pas aux 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 répertoriés, ajoutez _| sort_ juste avant le guillemet double. Vous pouvez également conserver les alias dans _~/.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 fichier _/etc/gitconfig_.

74
Acumenus
 $ git config --get-regexp alias 
443
William Pursell

J'ai créé un alias git appelé (assez étrangement) alias exactement dans ce but ... pratique de temps en temps si vous utilisez suffisamment de crénelage ...

$ git config --global alias.alias "config --get-regexp ^alias\."

Notez que l'expression régulière s'assure que la ligne commence par alias..

137
johnny

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

git config --list | grep alias

74
Rimian

Ce qui suit fonctionne sous Linux, MacOSX et Windows (avec msysgit).

Utilisez git la pour afficher les alias dans .gitconfig

Ai-je entendu 'script bash'? ;)

À propos de la partie "non nécessaire" dans un commentaire ci-dessus, j'ai essentiellement créé une page de manuel telle que la présentation de mes alias. Pourquoi tout ce bruit? N'est-ce pas exagéré?

Continuer à lire...

J'ai défini les commandes comme ceci dans mon .gitconfig, séparés 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 le TAB= 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 ajoutés à un alias ont aussi un TAB===== ajouté, ils sont donc affichés après le grepping.

Pour une meilleure visualisation, je diffuse la sortie de grep dans 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" 

La partie '\t=' '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 du terminal:

  • tous les '=' sont imprimés en rouge
  • tous les '#' sont imprimés en vert

version avancée: (couleur)

       la      =       "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"

En substance, comme ci-dessus, il suffit d'ajouter l'utilisation de sed pour obtenir les codes de couleur dans la sortie.

Le drapeau -R de moins est nécessaire pour obtenir les couleurs affichées en moins.

(J'ai récemment découvert que les commandes longues avec une barre de défilement sous leur fenêtre ne sont pas affichées correctement sur les appareils mobiles: le texte est coupé et la barre de défilement est tout simplement manquante. Cela pourrait être le cas avec le dernier extrait de code ici, conservez-le ainsi. l'esprit lorsque vous regardez des extraits de code ici lors de vos déplacements.)


Pourquoi faire fonctionner une telle magie?

J'ai un demi-mille de pseudonymes, adaptés à mes besoins.
De plus, certains d'entre eux changent avec le temps . Après tout, la meilleure idée d'avoir une liste à jour à portée de main est d'analyser le fichier .gitconfig.

Un court extrait de **** 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

Sur mes postes de travail linux ou mac, d'autres noms d'alias existent également dans les fichiers .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 de git h submodule, seulement gh submodule est tout ce qui est nécessaire pour obtenir de l'aide. Ce ne sont que quelques caractères, mais combien de fois les tapez-vous?

J'utilise tout ce qui suit, bien sûr qu'avec des raccourcis ...

  • ajouter
  • commettre
  • commit --amend
  • réinitialiser --hard HEAD
  • Pousser
  • fetch
  • rebasement
  • check-out
  • branche
  • show-branch (dans beaucoup de variations)
  • shortlog
  • reflog
  • diff (en variations)
  • log (dans beaucoup de variations)
  • statut
  • spectacle
  • remarques
  • ...

C'était juste du haut de ma tête.

Je dois souvent utiliser git sans interface graphique, car bon nombre des commandes git ne sont pas implémentées correctement dans les interfaces graphiques. Mais à chaque fois que je les mets à l’utiliser, c’est essentiellement 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 commits qu’elles ont en leur sein
ccm = "!git reset --soft HEAD~ && git commit" - 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 le reste ...
Faire fonctionner des 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 les mac ...

Pour mes besoins, cela semblait être une bonne chose à faire, d'adapter des commandes git comme ça ...
... et pour une utilisation plus simple, je me suis juste servi des commandes moins utilisées, je n'ai donc pas à consulter les pages de manuel à chaque fois. Les commandes sont prédéfinies et leur consultation est aussi simple que possible.

Je veux dire, nous sommes des programmeurs après tout? Faire en sorte que les choses fonctionnent comme nous en avons besoin est notre travail.

Voici une capture d'écran supplémentaire, cela fonctionne sous Windows:

script working with cmd.exe

BONUS: Si vous êtes sur Linux ou Mac, les pages de manuel colorisées peuvent vous aider un peu:

pages de manuel colorisées

27
sjas

Utiliser git var et filtrer uniquement ceux qui commencent par alias:

_git var -l | grep -e "^alias"
_
16
mkobit

Comme d'autres réponses mentionnées, 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 supprimer les lignes de pseudonymes 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 en éliminant la partie alias. de chaque ligne, en nous laissant la commande suivante:

git config -l | grep alias | cut -c 7-

Quelles impressions:

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!

14
Anubian Noob

pour les fenêtres:

git config --list | findstr "alias"
10
176coding

Rechercher ou afficher tous les alias

Ajoutez à votre .gitconfig sous [alias]:

aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"

Alors tu peux faire

  • git aliases - affiche TOUS les alias
  • git aliases commit - uniquement les alias contenant "commit"
9
Tom Hale

J'ai mentionné en juin 2018 avec " liste récapitulative - commandes git les plus utilisées " le Git 2.18 "utilise _--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_" indique désormais "_co is aliased to ..._", et non "_git co is_".

Voir commit b3a8076 (12 sept. 2017) par Kaartic Sivaraam (sivaraam) .
(Fusionnée par Junio ​​C Hamano - gitster - dans commit 5079cc8 , 25 septembre 2017)

help: modifier un message pour qu'il soit plus précis

Lorsque l'utilisateur essaie d'utiliser l'option '_--help_' sur une commande avec alias, des 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 créé un alias uniquement 'co' et non pas '_git co_'.
Cela peut même être incorrect dans les cas où l'utilisateur a utilisé un alias tel que 'tgit'.

_$ tgit co --help
`git co' is aliased to `checkout'
_
7
VonC

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 résultat suivant

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


Explication

  1. !git config --get-regexp ^alias\\. imprime toutes les lignes de la configuration git commençant 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 correspond à #-->).
  4. column -t -s $(printf \"\\043\") formate toutes les lignes dans une table de colonnes régulièrement espacée. Le caractère $(printf \"\\043\") qui correspond à # est utilisé comme séparateur.
  5. sort -k 1 trie toutes les lignes en fonction de la valeur de la première colonne

$ (printf\"\ 043 \")

Cela ne fait qu'imprimer le caractère # (hex 043) utilisé pour la séparation des colonnes. J'utilise ce petit bidouillage pour que le aliases alias lui-même ne contienne pas littéralement le caractère #. Sinon, ces caractères # seraient remplacés lors de l'impression. Note: Changez ceci en un autre caractère si vous avez besoin d'alias avec des signes littéraux #.

7
Thomas

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

$ __git_aliases

liste tous les alias :)

2
vigo

Si vous connaissez le nom de l'alias, vous pouvez utiliser l'option --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'
1
cmcginty

Depuis Git 2.18, vous pouvez utiliser git --list-cmds=alias

1
carej

Encore un autre alias git (appelé alias) qui affiche les alias git: ajoutez ce qui suit à votre section gitconfig [alias]:

[alias]
    # lists aliases matching a regular expression
    alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"

Exemple d'utilisation, donnant un nom d'alias complet (le nom d'alias correspond exactement: i.e., ^foobar$), et affiche simplement la valeur:

$ git alias st
alias.st status -s

$ git alias dif
alias.dif diff

Ou donnez regexp, qui montre 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}..

Mises en garde: citez l'expression rationnelle pour empêcher l'expansion du shell en tant que glob, bien que ce ne soit techniquement pas nécessaire si/quand aucun fichier ne correspond au modèle. De plus, toute expression rationnelle convient, à l'exception de ^ (début du motif) et $ (fin du motif) ne peuvent pas être utilisés; ils sont impliqués. Suppose que vous n'utilisez pas git-alias de git-extras.

De plus, vos pseudonymes seront évidemment différents. ce ne sont que quelques-uns que j'ai configurés. (Vous les trouverez peut-être utiles aussi.)

0
michael