654 Stimmen

Liste der Git-Aliase

Wie kann ich eine Liste meiner Git-Aliase ausgeben, d. h. etwas, das der Bash alias Befehl?

701voto

William Pursell Punkte 188248
$ git config --get-regexp alias

215voto

Asclepius Punkte 48774

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

169voto

johnny Punkte 3813

Ich habe ein Git-Alias mit dem Namen (seltsamerweise) alias für genau diesen Zweck... praktisch von Zeit zu Zeit, wenn Sie Aliasing genug verwenden...

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

Beachten Sie, dass die Regex sicherstellt, dass die Zeile mit alias. .

119voto

Rimian Punkte 34365

Eine andere Alternative (nur etwas, das ich mir leicht merken kann):

git config --list | grep alias

30voto

sjas Punkte 16831

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:

script working with cmd.exe

BONUS: Wenn Sie unter Linux oder Mac arbeiten, können Ihnen die farbigen man-Seiten sehr helfen:

kolorierte Manualseiten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X