Cela créera un alias git permanent nommé aliasqui sera stocké dans votre ~/.gitconfigfichier. Son utilisation listera tous vos alias git, dans presque le même format que dans le ~/.gitconfigfichier. 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 aliasd'ê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 aliasn'est qu'un alias et n'est pas une fonctionnalité de git.
Pour trier les alias répertoriés, ajoutez | sortjuste avant le guillemet double de fermeture. Vous pouvez également conserver les alias ~/.gitconfigtrié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/gitconfigfichier.
J'aime celui-ci parce qu'il se débarrasse du alias.début de chaque ligne
Brian J
3
Je ne sais pas pourquoi, mais cette réponse ne fonctionne pas pour moi. Je continue fatal: bad config. La solution de Git-extra fonctionne pour moi cependant: github.com/tj/git-extras/blob/master/bin/git-alias
Ashitaka
1
@Ashitaka, essayez une version limitée, par exemple git config --global alias.alias "! git config --get-regexp ^alias\.". Alternativement, assurez git version-vous d'avoir une version actuelle de git.
Acumenus
C'est vraiment un excellent travail et tout est réuni d'une manière extrêmement utilisable!
UpAndAdam
Je crois que vous pouvez vous débarrasser de la partie "! Git", qui se défait essentiellement. Voir la section de clôture de Git Aliases
En parlant de facile à retenir, vous pourriez aussi bien créer l' aliasalias une fois, puis oublier que vous l'avez même créé.
Acumenus
3
Vous pouvez utiliser -lcomme raccourci pratique pour --listmais j'aime l'idée de créer un alias pour répertorier les alias.
ADTC
1
Bonne solution, mais il vaut mieux utiliser grep avec une expression régulière pour produire des lignes commençant par un alias au cas où certaines configurations contiennent en quelque sorte un alias de mot-clé:git config --list | grep -E '^alias'
MasterMind
28
Les éléments suivants fonctionnent sous Linux, MacOSX et Windows (avec msysgit).
Utilisez git la pour afficher les alias dans .gitconfig
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:
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:
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 \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:
tous les '=' 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"
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.)
Pourquoi faire fonctionner une telle magie?
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 ...
ajouter
commettre
commit --amend
reset --hard HEAD
pousser
aller chercher
rebaser
check-out
branche
show-branch (dans de nombreuses variantes)
shortlog
reflog
diff (en variations)
journal (dans de nombreuses variantes)
statut
spectacle
Remarques
...
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 aaou git ca "..."dans Windows,
ou avec des alias bash gaa/ g aaou 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:
BONUS: Si vous êtes sous linux ou mac, les pages de manuel colorisées peuvent vous aider un peu:
Je n'arrive pas à faire fonctionner cela avec Windows. Les sorties sont vierges pour par exemplela = "!grep '\t=' ~/.gitconfig | less"
chwi
1
@Wilhelmsen: Avez-vous peut-être copié et collé des éléments de la liste ci-dessus? Avez-vous vraiment un TABpré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.
sjas
2
overengineering
Weapon X
dépend de la fréquence à laquelle vous utilisez quelque chose
sjas
16
Utiliser git varet filtrer uniquement ceux qui commencent par alias:
Comme d'autres réponses l'ont mentionné, git config -lrépertorie tous les détails de votre configuration à partir de votre fichier de configuration. Voici un exemple partiel de cette sortie pour ma configuration:
Lorsque l'utilisateur essaie d'utiliser l' --helpoption ' ' 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'
( Remarque: cela fonctionne pour moi dans git bash sous Windows . Pour d'autres terminaux, vous devrez peut-être adapter l'échappement. )
Explication
!git config --get-regexp ^alias\\. imprime toutes les lignes de git config commençant par alias.
sed -e s/^alias.//supprime alias.de la ligne
sed -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' aliasesalias 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 .
fatal: bad config line 15 in file C: / Users / ____ /. gitconfig
Urasquirrel
@Urasquirrel: Sur quel système d'exploitation rencontrez-vous des problèmes? Cela fonctionne pour moi dans git bash sur Windows et dans bash sur Mac OS X (Apple Git).
Thomas
C'était certainement des fenêtres, mais un an ou plus plus tard, je ne suis pas sûr à 100%.
Pouvez-vous montrer un exemple de ligne de commande sur la façon de l'utiliser, avec un exemple de sortie?
Acumenus
Intégré à quoi? Je ne trouve rien de ce genre dans msysgit. Où avez-vous trouvé cela exactement?
ADTC
2
Ni l'appeler directement depuis le terminal ni comme argument pour git ne produit de sortie de valeur. À quoi exactement cela est-il intégré?
agréablement ascyphous le
4
A travaillé pour moi dans git bash. $ __git_aliases renvoie une liste d'alias, bien qu'elle ne montre pas à quoi ils sont aliasés.
jaypb
1
@ADTC la ligne de code dans cette réponse est un exemple de ligne de commande. Le $ indique l'invite de terminal Linux typique. Tapez le reste de cette ligne dans un tel terminal et appuyez ENTERet 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.)
Superole
1
Si vous connaissez le nom de l'alias, vous pouvez utiliser l' --helpoption pour le décrire. Par exemple:
$ git sa --help
`git sa' is aliased to `stash'
$ git a --help
`git a' is aliased to `add'
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-aliasdegit-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.)
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:
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: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 commandealias
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.la source
alias.
début de chaque lignefatal: bad config
. La solution de Git-extra fonctionne pour moi cependant: github.com/tj/git-extras/blob/master/bin/git-aliasgit config --global alias.alias "! git config --get-regexp ^alias\."
. Alternativement, assurezgit version
-vous d'avoir une version actuelle de git.la source
'^alias\.'
git config -e
, puis utilisez vos yeux pour trouver la[alias]
section. Mais les fans de git semblent toujoursgit 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 partJ'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.
.la source
--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
la source
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'
Les éléments suivants fonctionnent sous Linux, MacOSX et Windows (avec msysgit).
Utilisez git la pour afficher les alias dans .gitconfig
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:
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:
version de base: (noir / blanc)
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:
version avancée: (colorée)
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.)
Pourquoi faire fonctionner une telle magie?
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:
Dans mes postes de travail Linux ou Mac, il existe également d'autres alias dans les .bashrc, un peu comme:
De cette façon, pas besoin de taper
git help submodule
, pas besoingit 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 lesccm = "!git reset --soft HEAD~ && git commit"
validations qu'elles contiennent - change le dernier message de validationD'un point de vue plus simple: à
quelle fréquence tapez-vous
git add .
ougit commit -am "..."
? Sans compter même le reste ...Faire fonctionner les choses comme
git aa
ougit ca "..."
dans Windows,ou avec des alias bash
gaa
/g aa
ougca "..."
/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:
BONUS: Si vous êtes sous linux ou mac, les pages de manuel colorisées peuvent vous aider un peu:
pages de manuel colorisées
la source
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.Utiliser
git var
et filtrer uniquement ceux qui commencent paralias
:la source
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:Nous pouvons donc extraire les lignes d'alias en utilisant
git config -l | grep alias
:Nous pouvons rendre cela plus joli en effaçant simplement
cut
laalias.
partie de chaque ligne, nous laissant avec cette commande:Qui imprime:
Enfin, n'oubliez pas d'ajouter ceci comme alias:
Prendre plaisir!
la source
Pour les fenêtres:
la source
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 .En plus de cela ou de
git config --get-regexp alias
, vous pouvez combiner sa sortie avecgit help
, dont la sortie changera avec Git 2.14.x / 2.15:Voir commit b3a8076 (12 sept. 2017) par Kaartic Sivaraam (
sivaraam
) .(Fusionné par Junio C Hamano -
gitster
- dans commit 5079cc8 , 25 sept. 2017)la source
Rechercher ou afficher tous les alias
Ajoutez à votre
.gitconfig
sous[alias]
:Ensuite, vous pouvez faire
git aliases
- afficher TOUS les aliasgit aliases commit
- uniquement les alias contenant "commit"la source
J'utilise cet alias dans mon global
~/.gitconfig
pour produire la sortie suivante
( Remarque: cela fonctionne pour moi dans git bash sous Windows . Pour d'autres terminaux, vous devrez peut-être adapter l'échappement. )
Explication
!git config --get-regexp ^alias\\.
imprime toutes les lignes de git config commençant paralias.
sed -e s/^alias.//
supprimealias.
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 .la source
Il y a une fonction intégrée ... essayez
liste tous les alias :)
la source
$
indique l'invite de terminal Linux typique. Tapez le reste de cette ligne dans un tel terminal et appuyezENTER
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.)Si vous connaissez le nom de l'alias, vous pouvez utiliser l'
--help
option pour le décrire. Par exemple:la source
Depuis git 2.18, vous pouvez utiliser
git --list-cmds=alias
la source
Encore un autre
git
alias (appeléalias
) qui affiche les alias git: ajoutez ce qui suit à votre[alias]
section gitconfig :Exemple d'utilisation, donnant le nom d'alias complet (correspond exactement au nom d'alias: ie,
^foobar$
), et affiche simplement la valeur:Ou, donnez regexp, qui affiche tous les alias et valeurs correspondants:
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 pasgit-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.)
la source