Finns det ett sätt att färga utdata för git (eller något kommando)?

Överväg:

 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  

Och

 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 #  

Utgången ser likadan ut, men informationen är helt annorlunda: filen har gått från ostadierad till iscensatt för åtagande.

Finns det ett sätt att färga utdata? Till exempel är filer som inte är iscensatta röda, iscensatta är gröna?

Eller till och med Changes not staged for commit: till rött och # Changes to be committed: till grönt?

Arbetar du i Ubuntu.

EDIT: Googling hittade det här svaret som fungerar bra: git config --global --add color.ui true.

Finns det dock någon mer allmän lösning för att lägga till färg till en kommandoutgång?

Kommentarer

  • Vill du ha något som färgar alla kommandoutgångar? Hur skulle det veta vilka delar som ska färgas?
  • Jag antar att om det fanns ett sätt att konfigurera det med regex: Varje färg kan ha en start-regex. Och det kan finnas en standardfärgregex för att stänga av alla färger. Och om texten ” foo ” visas, visa den i en viss färg …

Svar

Du kan skapa ett avsnitt [color] i din ~/.gitconfig med t.ex. följande innehåll

[color] diff = auto status = auto branch = auto interactive = auto ui = true pager = true 

Du kan också finjustera vad du vill ha färgat på vilket sätt, t.ex.

[color "status"] added = green changed = red bold untracked = magenta bold [color "branch"] remote = yellow 

Jag hoppas att det här kommer igång. Och naturligtvis behöver du en terminal som stöder färg.

Kommentarer

  • Jag tror att det kan vara värt att sätta git config –global color.ui auto (@Evgeny ’ s) högst upp på din … Jag tror att ’ är sannolikt vad de flesta är letar efter. Jag ’ har röstat båda … Jag ’ Jag säger bara, för internetets skull när det kommer hit, jag tror att många människor vill bara ha det enkla fodret. Desto bättre om de får det, plus din extra godhet.
  • Detta fungerade perfekt för mig – i avsnittet [color "status"] lade jag till branch = yellow.
  • Du kan lägga till [färg] -avsnitt i projektet ’ s .git / config-fil också
  • Och du kan bara ställa in en konfigurationsvariabel för en enda anrop av ett git-kommando: stackoverflow.com/a/18304605/134044

Svar

Du vill antagligen använda

git config --global color.ui auto 

auto -delen säger att git bara försöker använda färg på terminaler som stöder det, och du kommer inte att få ANSI-sekvenser om du omdirigerar utdata från git-kommandon till en fil till exempel. Att ställa in det på true är samma som auto, och detta är också standard sedan Git 1.8.4.

color.ui är en metakonfiguration som innehåller alla de olika color.* -konfigurationer som är tillgängliga med git-kommandon.

Detta förklaras djupgående i git help config.

Kommentarer

  • Kan du förklara skillnaden mellan color.ui true (vilken auto pekar på) kontra always? Jag läste dokumenten men jag förstår fortfarande inte skillnaden.
  • @chharvey color.ui = auto + git diff | less – inga färger, color.ui = always + git diff | less – färgad utgång. LESS=-R är underförstått.

Svar

git config --global color.ui auto git config --global color.branch auto git config --global color.status auto 

Kommentarer

  • FYI, endast detta fungerade för git version 1.5.2.1, andra svar gjorde inte ’ t.

Svar

Det accepterade svaret ger den vanligaste lösningen. Om du av någon anledning inte behöver ändra konfigurationen permanent, vilket den lösningen gör, kan du åsidosätta konfigurationen för ett enda git-kommando:

git -c color.ui=always <usual git command and options> 

Till exempel :

git -c color.ui=always status git -c color.ui=always diff 

Testat: stöds på git 2.4.6, inte stöds på git 1.7.1.

Kommentarer

  • För alla andra som försöker få färg när de rör till less som jag just var, kan du göra less skicka färgteckningen till terminalen via less -R.
  • När lades den här funktionen till?

Svar

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 

Svar

eller stäng av hela / större delen av färgningen via:

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 

Kommentarer

  • OP var inte ’ t vill stänga av färger, snarare att aktivera färger . I OP förklarade han hur man gör för git och vill ha något sätt att göra det i en mer global bemärkelse. Om du känner till en sådan metod kan du redigera ditt svar för att förklara det.
  • ibland letar folk efter något nära besläktat men något annorlunda – men tack för nedröstningen.
  • Jag gillade it @theRiley

Svar

För en färgad git diff piped i less fungerar det här:

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

Svar

Du kan göra detta med Arbitrary Command Output Colourer . Det fungerar mestadels, men jag har inte tänkt ut hur man kan kringgå en bugg där uppmaningar som förväntar sig att ingång inte visas och du inte kan bara skriva in den kända nödvändiga inmatningen och tryck på Enter för att fortsätta i alla fall.

Exempel på ~/.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 

. .som fungerar bra tillsammans med alias git="acoc git" i .bash_profile.

Kommentarer

  • Kan du dela din konfiguration för acoc?
  • Nvm, det var lätt att skriva. 🙂 Tillagt till svaret.

Svar

Jag vet att inlägget är fyra år gammalt men ingen svarade från mitt läger, färgblind. särskilja färger, ignorera mitt inlägg.

”git status” lägger till exempel ut text som är vit i bakgrunden / svart på vit bakgrund (läsbar), mörkgrå för borttagen (oläslig mot svart bakgrund men läsbar mot en vit bakgrund) och medelgrå för en dded (korn läsbart på svart bakgrund, oläsligt på vit bakgrund). Jag brukade växla bakgrunden till mitt terminalfönster till / från vitt / svart så att jag kunde läsa den oläsliga texten. En enkel lösning är mer:

 git status | more 

Detta gör all text läsbar på ett standardfönster i vit eller svart standardterminal.

Kommentarer

  • Du kan också ändra konfigurationen för att ställa in allt till ingen färg som standard (color.ui = never).

Svar

För att färga utdata från git diff kan du lägga till en färgdiffavsnitt till ~ / .gitconfig. Till exempel:

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

Här är 154 och 196 ANSI 256-färgskoder. För mer information se man git config.

Svar

Ta en titt på https://github.com/dandavison/delta för syntaxfärgning av färgat språk (diff. git) och färgad markering av tillagda / borttagna rader i diff .

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *