Gibt es eine Möglichkeit, die Ausgabe für git (oder einen Befehl) zu färben?
Beachten Sie:
baller@Laptop:~/rails/spunky-monkey$ git status # On branch new-message-types # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: app/models/message_type.rb # no changes added to commit (use "git add" and/or "git commit -a") baller@Laptop:~/rails/spunky-monkey$ git add app/models
und
baller@Laptop:~/rails/spunky-monkey$ git status # On branch new-message-types # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: app/models/message_type.rb #
Die Ausgabe sieht gleich aus, aber die Informationen sind völlig unterschiedlich: Die Datei wurde für das Festschreiben von nicht bereitgestellt auf bereitgestellt.
Gibt es einen Weg? Ausgabe ausgeben? Zum Beispiel sind nicht bereitgestellte Dateien rot, die bereitgestellten sind grün?
Oder sogar Changes not staged for commit:
nach rot und # Changes to be committed:
nach grün?
Arbeiten in Ubuntu.
BEARBEITEN: Googeln hat diese Antwort gefunden, die hervorragend funktioniert: git config --global --add color.ui true
.
Es gibt jedoch eine allgemeinere Lösung für das Hinzufügen von Farbe zu a Befehlsausgabe?
Kommentare
- Sie möchten etwas, das alle Befehlsausgaben koloriert? Wie würde es wissen, welche Teile zu färben sind?
- Ich denke, wenn es eine Möglichkeit gäbe, es mit Regex zu konfigurieren: Jede Farbe könnte einen Start-Regex haben. Und es könnte einen Standard-Farbregex geben, um alle Farben auszuschalten. Und wenn der Text “ foo “ angezeigt wird, zeigen Sie ihn in einer bestimmten Farbe an …
Antwort
Sie können einen Abschnitt [color]
in Ihrem ~/.gitconfig
mit zB Der folgende Inhalt
[color] diff = auto status = auto branch = auto interactive = auto ui = true pager = true
Sie können auch genau steuern, was auf welche Weise gefärbt werden soll, z. B.
[color "status"] added = green changed = red bold untracked = magenta bold [color "branch"] remote = yellow
Ich hoffe, Sie können damit anfangen. Und natürlich benötigen Sie ein Terminal, das Farbe unterstützt.
Kommentare
- Ich denke, es könnte sich lohnen, git config –global color.ui zu verwenden auto (@Evgeny ‚ s Antwort) ganz oben auf Ihrer Seite … Ich denke, dass ‚ wahrscheinlich das ist, was die meisten Leute sind Auf der Suche nach. Ich ‚ habe beide positiv bewertet … Ich ‚ sage nur, um des Internets willen, wie es hierher kommt, denke ich a Viele Leute wollen nur diesen einfachen Einzeiler. Umso besser, wenn sie es bekommen, plus Ihre zusätzliche Güte.
- Das hat perfekt für mich funktioniert – im Abschnitt
[color "status"]
habe ich . - Sie können dem Abschnitt ‚ auch eine .git / config-Datei hinzufügen.
- Und Sie Sie können einfach eine Konfigurationsvariable für einen einzelnen Aufruf eines git-Befehls festlegen: stackoverflow.com/a/18304605/134044
Antwort
Sie möchten wahrscheinlich
git config --global color.ui auto
die auto
besagt, dass git nur versucht, Farbe auf Terminals zu verwenden, die dies unterstützen, und dass Sie keine ANSI-Sequenzen erhalten, wenn Sie beispielsweise die Ausgabe von git-Befehlen in eine Datei umleiten. Das Festlegen auf true
entspricht auto
, und dies ist auch die Standardeinstellung seit Git 1.8.4.
Die color.ui
ist eine Metakonfiguration, die alle verschiedenen color.*
-Konfigurationen enthält, die mit git-Befehlen verfügbar sind.
Dies wird erläutert Ausführliche Informationen zu git help config
.
Kommentare
- Können Sie den Unterschied zwischen color.ui
true
(auf dieauto
zeigt) versusalways
? Ich habe die Dokumente gelesen, aber ich verstehe den Unterschied immer noch nicht. - @chharvey
color.ui = auto
+git diff | less
– keine Farben,color.ui = always
+git diff | less
– farbige Ausgabe.LESS=-R
ist impliziert.
Antwort
git config --global color.ui auto git config --global color.branch auto git config --global color.status auto
Kommentare
- FYI, nur dies funktionierte für Git-Version 1.5.2.1, andere Antworten haben ‚ t.
Antwort
Die akzeptierte Antwort bietet die häufigste Lösung. Wenn Sie die Konfiguration aus irgendeinem Grund nicht dauerhaft ändern müssen, wie dies bei dieser Lösung der Fall ist, können Sie die Konfiguration für einen einzelnen Git-Befehl überschreiben:
git -c color.ui=always <usual git command and options>
Zum Beispiel :
git -c color.ui=always status git -c color.ui=always diff
Getestet: unterstützt von Git 2.4.6, nicht unterstützt von Git 1.7.1.
Kommentare
- Für alle anderen, die versuchen, Farbe in
less
zu leiten, wie ich es gerade war, können Sieless
Übergeben Sie die Farb-Escape-Zeichen überless -R
an das Terminal. - Wann wurde diese Funktion hinzugefügt?
Antwort
git config --global color.ui always git config --global color.branch always git config --global color.diff always git config --global color.interactive always git config --global color.status always git config --global color.grep always git config --global color.pager true git config --global color.decorate always git config --global color.showbranch always
Antwort
oder deaktivieren Sie die gesamte / den größten Teil der Färbung über:
git config --global color.ui false git config --global color.branch false git config --global color.diff false git config --global color.interactive false git config --global color.status false git config --global color.grep false git config --global color.pager false git config --global color.decorate false git config --global color.showbranch false
Kommentare
- OP war nicht ‚ nicht darauf ausgerichtet, Farben auszuschalten, sondern Farben einzuschalten . Im OP erklärte er, wie man für
git
vorgeht, und möchte eine Möglichkeit, dies in einem globaleren Sinne zu tun. Wenn Sie eine solche Methode kennen, bearbeiten Sie bitte Ihre Antwort, um dies zu erklären. - Manchmal suchen die Leute nach etwas eng verwandtem, aber etwas anderem – aber danke für die Ablehnung.
- Ich mochte it @theRiley
Antwort
Für eine farbige git diff
-Rohrleitung In less
funktioniert dies:
git -c color.diff=always diff [...] | less -R
Antwort
Sie können dies mit Arbitrary Command Output Colourer tun. Es funktioniert meistens, aber ich habe nicht herausgefunden, wie man einen Fehler umgeht, bei dem Eingabeaufforderungen, die eine Eingabe erwarten, nicht angezeigt werden, und Sie können nicht einfach die bekannte erforderliche Eingabe eingeben und die Eingabetaste drücken, um in jedem Fall fortzufahren.
Beispiel für ~/.acoc.conf
für git
:
# git [git/ae] /.*(error:.*)/ red+bold /.*(warning:.*)/ yellow /.*(hint:.*)/ magenta /.*(up-to-date).*/ green+bold /.*(nothing to commit).*/ green /^(\+.*)/ green /^(-.*)/ red
. Dies funktioniert gut zusammen mit alias git="acoc git"
in .bash_profile
.
Kommentare
- Können Sie Ihre Konfiguration für
acoc
freigeben? - Nvm, es war einfach zu schreiben. 🙂 Zur Antwort hinzugefügt.
Antwort
Ich weiß, dass der Beitrag vier Jahre alt ist, aber niemand hat aus meinem Lager geantwortet, der Farbenblinde. Wenn Sie können Farben unterscheiden, meinen Beitrag ignorieren.
„Git-Status“ gibt beispielsweise Text aus, der weiß auf Hintergrund / schwarz auf weißem Hintergrund (lesbar), dunkelgrau für gelöscht (unleserlich vor schwarzem Hintergrund, aber lesbar dagegen) ist ein weißer Hintergrund) und mittelgrau für a dded (Gerste auf schwarzem Hintergrund lesbar, auf weißem Hintergrund unleserlich). Ich habe den Hintergrund meines Terminalfensters auf / von Weiß / Schwarz umgeschaltet, damit ich den unleserlichen Text lesen konnte. Eine einfache Lösung ist mehr:
git status | more
Dadurch wird der gesamte Text in einem Standard-Terminalfenster mit weißem oder schwarzem Hintergrund lesbar.
Kommentare
Antwort
Um die Ausgabe von git diff
einzufärben, können Sie einen Abschnitt color.diff hinzufügen ~ / .gitconfig. Beispiel:
[color "diff"] new = bold italic 154 old = bold italic 196
Hier sind 154
und 196
ANSI 256-Farben-Codes. Weitere Informationen finden Sie unter man git config
.
Antwort
Schauen Sie sich https://github.com/dandavison/delta für die farbliche Syntaxhervorhebung der (git) diff-Ausgabe und die farbige Hervorhebung der hinzugefügten / entfernten Zeilen im diff .
color.ui = never
).