Liste des alias de Git

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

 $ git config --get-regexp alias

J’ai créé un alias git appelé (étrangement assez) pour exactement cet objective … pratique de temps en temps si vous utilisez assez d’alias …

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

Notez que le regex vérifie que la ligne commence par un 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 de Johnny . Cela s’applique si vous n’utilisez pas git-alias de git-extras .

Sous Linux, exécutez-le une fois:

 git config --global alias.alias "! git config --get-regexp ^alias\. | sed -es/^alias\.// -es/\ /\ =\ /" 

Cela créera un alias git permanent nommé alias qui sera stocké dans votre fichier ~/.gitconfig . En l’utilisant, vous listerez tous vos alias git, presque au 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 -es/^alias\.// -es/\ /\ =\ / 

Les considérations facultatives suivantes s’appliquent:

  • Pour empêcher l’alias d’ alias de figurer dans la liste ci-dessus, ajoutez | grep -v ^'alias ' | grep -v ^'alias ' juste avant le double guillemet de fermeture. Je ne le recommande pas aux utilisateurs de Linux pour qu’ils n’oublient pas que l’ alias commande n’est qu’un alias et qu’il ne s’agit pas d’une fonctionnalité de git.

  • Pour sortinger les alias répertoriés, ajoutez | sort | sort juste avant le double devis de clôture. Vous pouvez également conserver les alias dans ~/.gitconfig sortingés.

  • Pour append l’alias en tant --global é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 .

Les travaux suivants fonctionnent sous Linux, MacOSX et Windows (avec msysgit).

Utilisez git la pour afficher les alias dans .gitconfig

Ai-je entendu ‘script bash’? 😉

A propos de la partie “pas nécessaire” dans un commentaire ci-dessus, j’ai essentiellement créé une page de manuel comme une vue d’ensemble pour mes alias. Pourquoi tout le monde? N’est-ce pas complet?

Continuer à lire…

J’ai défini les commandes comme ceci dans mon fichier .gitconfig, séparé 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’onglet avant et après le ‘=’ dans leur définition, juste des espaces.)

Les commentaires non ajoutés à un alias ont également une tabulation = = = = = ajouté, ils sont donc affichés après la prise en charge.

Pour un meilleur visionnage, je dissortingbue la sortie grep en moins, comme ceci:

version de base: (noir / blanc)

  #.gitconfig [alias] # use 'git h ' for help, use 'git la' to list aliases ===== h = help #...  la = "!grep '\t=' ~/.gitconfig | less" 

La partie ‘ \t= ‘ correspond à TAB = .

Pour avoir un meilleur aperçu de mes alias, et depuis que j’utilise la console bash, j’ai coloré la sortie avec les couleurs du terminal:

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

version avancée: (colorée)

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

De la même manière que ci-dessus, l’utilisation de sed est ajoutée pour que les codes de couleur apparaissent 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 longues commandes avec une barre de défilement sous leur fenêtre ne s’affichent pas correctement sur les périphériques mobiles: leur texte est coupé et la barre de défilement manque simplement. Cela peut être le cas avec le dernier fragment de code ici. attention lorsque vous regardez des extraits de code lors de vos déplacements.)


Pourquoi faire fonctionner une telle magie?

J’ai un demi-mile d’alias, adapté à mes besoins.
De plus, certains d’entre eux changent avec le temps . Après tout, la meilleure idée d’avoir une liste à jour est d’parsingr le fichier .gitconfig.

Un extrait **** court 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 stations de travail linux ou mac, d’autres alias existent également 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 le git help submodulegit help submodule , pas besoin de git h submodulegit h submodule , juste le gh submodulegh submodule est tout ce qu’il faut pour obtenir de l’aide. Ce ne sont que quelques personnages, mais à quelle fréquence les tapez-vous?

J’utilise tout ce qui suit, bien sûr uniquement avec les raccourcis …

  • append
  • commettre
  • commettre –amend
  • réinitialiser –hard HEAD
  • pousser
  • chercher
  • rebase
  • check-out
  • twig
  • show-branch (dans beaucoup de variations)
  • shortlog
  • refloguer
  • diff (en variations)
  • connecter (dans beaucoup de variations)
  • statut
  • montrer
  • Remarques

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

Je dois souvent utiliser git sans interface graphique, car de nombreuses commandes git ne sont implémentées correctement dans aucune interface graphique. Mais chaque fois que je les mets à utiliser, 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 twigs locales et distantes ainsi que les commits qu’elles contiennent
ccm = "!git reset --soft HEAD~ && git commit" – change le dernier message de validation

D’un sharepoint vue plus simple:
À quelle fréquence tapez-vous git add . ou git commit -am "..." ? Sans compter le rest …
Faire fonctionner les choses comme git aa ou git ca "..." dans windows,
ou avec alias bash gaa / g aa ou gca "..." / g ca "..." sous Linux et sur mac …

Pour mes besoins, il semblait judicieux de personnaliser les commandes git comme celle-ci …
… et pour une utilisation plus facile, je me suis simplement occupé des commandes moins utilisées, donc je n’ai pas à consulter les pages de manuel à chaque fois. Les commandes sont prédéfinies et leur recherche est aussi simple que possible.

Je veux dire, nous sums 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:

script travaillant avec 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

Comme d’autres réponses le mentionnent, 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.twigs=!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 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.twigs=!git remote show origin | grep \w*\s*(new^|tracked) -E 

Nous pouvons rendre cette image plus jolie simplement cut supprimant l’ alias. partie de chaque ligne, nous laissant avec cette commande:

 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 twigs=!git remote show origin | grep \w*\s*(new^|tracked) -E 

Enfin, n’oubliez pas d’append ceci comme alias:

 git config --global alias.la "!git config -l | grep alias | cut -c 7-" 

Prendre plaisir!

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

 git var -l | grep -e "^alias" 

Pour les fenêtres:

 git config --list | findstr "alias" 

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”

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' 

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

 $ __git_aliases 

liste tous les alias 🙂

J’utilise cet alias dans mon ~/.gitconfig

 # ~/.gitconfig [alias] aliases = !git config --get-regexp ^alias\\. | sed -es/^alias.// -es/\\ /\\ $(printf \"\\043\")--\\>\\ / | column -t -s $(printf \"\\043\") | sort -k 1 

produire la sortie suivante

 $ git aliases aliases --> !git config --get-regexp ^alias\. | sed -es/^alias.// -es/\ /\ $(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 les autres terminaux, vous devrez peut-être adapter l’échappement. )


Explication

  1. !git config --get-regexp ^alias\\. imprime toutes les lignes de git config qui commencent par un alias.
  2. sed -es/^alias.// supprime les alias. de la ligne
  3. sed -es/\\ /\\ $(printf \"\\043\")--\\>\\ / remplace la première occurrence d’un espace avec \\ $(printf \"\\043\")--\\> (qui évalue à #--> ).
  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 sortinge toutes les lignes en fonction de la valeur de la première colonne

$ (printf \ “\ 043 \”)

Cela imprime juste 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 caractère # . Sinon, il remplacerait ces # caractères lors de l’impression. Remarque : changez cela en un autre caractère si vous avez besoin d’alias avec des signes # littéraux.

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, en donnant un nom complet à l’alias (correspond exactement au nom de l’alias: ie, ^foobar$ ), et montre 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: citer 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. En outre: toute expression rationnelle est correcte, sauf que ^ (début du motif) et $ (fin du motif) ne peuvent pas être utilisés; ils sont implicites. Suppose que vous n’utilisez pas git-alias de git-extras .

De plus, vos alias seront évidemment différents; Ce ne sont que quelques-uns que j’ai configurés. (Peut-être que vous les trouverez utiles aussi.)

En plus de l’ 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 septembre 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écis

Lorsque l’utilisateur essaie d’utiliser l’option ‘ --help ‘ sur une commande aliasée, 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 n’a généré que des 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'