it-swarm.com.de

Wie koloriere ich die Ausgabe von Git?

Gibt es eine Möglichkeit, die Ausgabe für git (oder einen Befehl) zu färben?

Erwägen:

[email protected]:~/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")
[email protected]:~/Rails/spunky-monkey$ git add app/models

Und

[email protected]:~/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 eine Möglichkeit, die Ausgabe einzufärben? Zum Beispiel sind nicht bereitgestellte Dateien rot, die bereitgestellten sind grün?

Oder auch Changes not staged for commit: zu rot und # Changes to be committed: zu grün?

Arbeiten in Ubuntu.

EDIT: Googeln hat diese Antwort gefunden, die großartig funktioniert: git config --global --add color.ui true.

Gibt es jedoch eine allgemeinere Lösung für das Hinzufügen von Farbe zu einer Befehlsausgabe?

269
B Seven

Sie können einen Abschnitt erstellen [color] in deinem ~/.gitconfig mit z.B. den folgenden 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.

[color "status"]
  added = green
  changed = red bold
  untracked = Magenta bold

[color "branch"]
  remote = yellow

Ich hoffe, das bringt Sie zum Laufen. Und natürlich benötigen Sie ein Terminal, das Farbe unterstützt.

279
Marco

Sie möchten wahrscheinlich verwenden

git config --global color.ui auto

Der Teil 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 Setzen auf true ist dasselbe wie auto, und dies ist auch die Standardeinstellung seit Git 1.8.4.

Das color.ui ist eine Metakonfiguration, die alle verschiedenen color.* Konfigurationen mit Git-Befehlen verfügbar.

Dies wird ausführlich in git help config.

235
Evgeny
git config --global color.ui auto
git config --global color.branch auto
git config --global color.status auto
20
sakisk

Die akzeptierte Antwort gibt 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.

17
Hamlet
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
11
mlibre

Für ein farbiges git diff in less geleitet, funktioniert dies:

git -c color.diff=always diff [...] | less -R
3
jox

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 nicht einfach die bekannte erforderliche Eingabe eingeben und die Eingabetaste drücken können, um in jedem Fall fortzufahren.

Beispiel von ~/.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

..das funktioniert gut zusammen mit alias git="acoc git" im .bash_profile.

1
Tom Mahoney

Ich weiß, dass die Post vier Jahre alt ist, aber niemand hat aus meinem Lager geantwortet, der Farbenblinde. Wenn Sie Farben unterscheiden können, ignorieren Sie meinen Beitrag.

"git status" gibt beispielsweise Text aus, der weiß auf dem Hintergrund/schwarz auf weißem Hintergrund (lesbar), dunkelgrau zum Löschen (unleserlich vor einem schwarzen Hintergrund, aber lesbar vor einem weißen Hintergrund) und mittelgrau zum Hinzufügen (Gerste lesbar auf Schwarz) ist Hintergrund, unleserlich auf weißem Hintergrund). 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.

So färben Sie die Ausgabe von git diff Sie können ~/.gitconfig einen Abschnitt color.diff hinzufügen. Zum Beispiel:

[color "diff"]
  new = bold italic 154
  old = bold italic 196

Hier 154 und 196 sind ANSI 256-Farbcodes. Für weitere Details siehe man git config.

0
sergio

oder schalten Sie die gesamte/den größten Teil der Färbung aus ü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
0
theRiley

Schauen Sie sich https://github.com/dandavison/delta an, um die Syntax-Hervorhebung der (Git-) Diff-Ausgabe in farbiger Sprache und die farbige Hervorhebung der hinzugefügten/entfernten Zeilen im Diff zu erfahren.

0
ded7