Wie kann ich eine Liste meiner Git-Aliase ausgeben, d. h. etwas, das der Bash alias
Befehl?
Antworten
Zu viele Anzeigen?Diese Antwort stützt sich auf die réponse von johnny . Es gilt, wenn Sie nicht mit git-alias
de git-extras
.
Unter Linux, einmal ausführen:
git config --global alias.alias "! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /"
Dadurch wird ein permanenter Git-Alias mit dem Namen alias
die in Ihrer Datenbank gespeichert wird ~/.gitconfig
Datei. Damit werden alle Ihre Git-Aliase aufgelistet, und zwar in fast demselben Format wie in der Datei ~/.gitconfig
Datei. Um sie zu verwenden, geben Sie ein:
$ git alias
loga = log --graph --decorate --name-status --all
alias = ! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /
Es gelten die folgenden Überlegungen:
-
Um zu verhindern, dass der Alias
alias
wie oben aufgelistet zu bekommen, anhängen| grep -v ^'alias '
kurz vor dem schließenden Anführungszeichen. Ich empfehle dies nicht, damit die Benutzer nicht vergessen, dass der Befehlalias
ist nur ein Alias und keine Funktion von Git. -
Um die aufgelisteten Aliasnamen zu sortieren, fügen Sie
| sort
kurz vor dem schließenden Anführungszeichen. Alternativ können Sie die Aliasnamen auch in~/.gitconfig
sortiert. -
Um den Alias als systemweiten Alias hinzuzufügen, ersetzen Sie
--global
(für den aktuellen Benutzer) mit--system
(für alle Benutzer). Dies wird normalerweise in der/etc/gitconfig
Datei.
Das Folgende funktioniert unter Linux, MacOSX und Windows (mit msysgit).
Utilice Schwachkopf um Aliase in .gitconfig anzuzeigen
Habe ich "Bash-Scripting" gehört? ;)
Was den Teil "nicht benötigt" in einem Kommentar oben betrifft, so habe ich im Grunde eine man-Seite wie eine Übersicht für meine Aliase erstellt. Warum die ganze Aufregung? Ist das nicht totaler Overkill?
Lesen Sie weiter...
Ich habe die Befehle wie folgt in meiner .gitconfig gesetzt, getrennt wie TAB=TAB :
[alias]
alias1 = foo -x -y --z-option
alias2 = bar -y --z-option --set-something
und definierte einfach einen weiteren Alias, um die TAB= Teil der definierten Aliasnamen. (Alle anderen Optionen haben keine Tabulatoren vor und nach dem "=" in ihrer Definition, nur Leerzeichen).
Kommentare, die nicht an einen Alias angehängt sind, haben auch einen TAB===== angehängt, damit sie nach dem Grepping angezeigt werden.
Zur besseren Ansicht leite ich die grep-Ausgabe in less ein, etwa so:
Basisversion: (schwarz/weiß)
#.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"
Die ' \t=
' Teil passt TAB= .
Um einen noch besseren Überblick über meine Aliase zu haben, und da ich die Bash-Konsole verwende, habe ich die Ausgabe mit Terminalfarben eingefärbt:
- alle '=' sind in rot gedruckt
- alle '#' sind in grün gedruckt
erweiterte Version: (farbig)
la = "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"
Im Grunde das Gleiche wie oben, nur sed wird hinzugefügt, um die Farbcodes in die Ausgabe zu bekommen.
El -R
Flagge von weniger benötigt, um die dargestellten Farben in weniger zu erhalten.
(Ich habe kürzlich festgestellt, dass lange Befehle mit einer Bildlaufleiste unter dem Fenster auf mobilen Geräten nicht korrekt angezeigt werden: Der Text wird abgeschnitten und die Bildlaufleiste fehlt einfach. Das könnte bei dem letzten Codeschnipsel hier der Fall sein. Behalten Sie das im Hinterkopf, wenn Sie sich die Codeschnipsel hier unterwegs ansehen).
Warum sollte ein solcher Zauber funktionieren?
=================================================
Ich habe etwa eine halbe Meile von Aliasen, die auf meine Bedürfnisse zugeschnitten sind.
Auch einige von ihnen sich im Laufe der Zeit verändern Die beste Idee, um eine aktuelle Liste zur Hand zu haben, ist also das Parsen der .gitconfig.
Ein ****short**** Auszug aus meinen .gitconfig Aliasen:
# 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
Auf meinen Linux- oder Mac-Workstations gibt es auch weitere Aliase in den .bashrc's, etwa so:
#.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
Auf diese Weise brauchen Sie nicht zu tippen git help submodule
keine Notwendigkeit für git h submodule
, nur gh submodule
ist alles, was nötig ist, um die Hilfe zu bekommen. Es sind nur ein paar Zeichen, aber wie oft tippen Sie sie?
Ich verwende alle der folgenden, natürlich nur mit Abkürzungen...
- hinzufügen.
- übergeben.
- commit --amend
- zurücksetzen --hard HEAD
- drücken.
- fetch
- neu gründen
- Zur Kasse
- Zweigstelle
- show-branch (in vielen Variationen)
- shortlog
- reflog
- diff (in Variationen)
- log (in vielen Variationen)
- Status
- anzeigen
- Hinweise
- ...
Das war nur eine spontane Idee von mir.
Ich muss Git oft ohne GUI verwenden, da viele Git-Befehle in keinem der grafischen Frontends richtig implementiert sind. Aber jedes Mal, wenn ich sie benutze, ist es meistens auf die gleiche Weise.
Zu dem im letzten Absatz erwähnten Teil "nicht umgesetzt":
Ich habe noch nichts Vergleichbares in einer grafischen Benutzeroberfläche gefunden:
sba = show-branch --color=always -a --more=10 --no-name
- alle lokalen und entfernten Zweige sowie die darin enthaltenen Überarbeitungen anzeigen
ccm = "!git reset --soft HEAD~ && git commit"
- letzte Commit-Meldung ändern
Von einem Standpunkt aus gesehen ist das einfacher:
Wie oft tippen Sie git add .
o git commit -am "..."
? Nicht einmal den Rest mitgerechnet...
Dinge zum Laufen bringen wie git aa
o git ca "..."
in Windows,
oder mit Bash-Aliasnamen gaa
/ g aa
o gca "..."
/ g ca "..."
unter Linux und auf Macs...
Für meine Bedürfnisse schien es eine kluge Sache zu sein, Git-Befehle wie diesen anzupassen...
... und um die Benutzung zu erleichtern, habe ich mir für weniger häufig verwendete Befehle selbst geholfen, damit ich nicht jedes Mal die Manpages konsultieren muss. Die Befehle sind vordefiniert und das Nachschlagen ist so einfach wie möglich.
Ich meine, wir sind schließlich Programmierer? Es ist unsere Aufgabe, die Dinge so zum Laufen zu bringen, wie wir sie brauchen.
Hier ist ein weiterer Screenshot, der unter Windows funktioniert:
BONUS: Wenn Sie unter Linux oder Mac arbeiten, können Ihnen die farbigen man-Seiten sehr helfen:
- See previous answers
- Weitere Antworten anzeigen