Er der en måde at farve output på git (eller en hvilken som helst kommando)?

Overvej:

 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  

Og

 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 #  

Outputtet ser det samme ud, men informationen er helt anderledes: filen er gået fra ikke-iscenesat til iscenesat for forpligtelse.

Er der en måde at farvelægge output? For eksempel er filer, der ikke er iscenesat, røde, iscenesatte er grønne?

Eller endda Changes not staged for commit: til rødt og # Changes to be committed: til grønt?

Arbejder du i Ubuntu.

EDIT: Googling fandt dette svar, der fungerer godt: git config --global --add color.ui true.

Er der dog nogen mere generel løsning til at tilføje farve til en kommandooutput?

Kommentarer

  • Vil du have noget, der farvelægger alle kommandooutputs? Hvordan ville det vide, hvilke dele der skulle farves?
  • Jeg gætte, hvis der var en måde at konfigurere det ved hjælp af regex: Hver farve kunne have en start-regex. Og der kunne være en standard farve regex for at slukke for alle farver. Og hvis teksten ” foo ” vises, skal du vise den i en bestemt farve …

Svar

Du kan oprette et afsnit [color] i din ~/.gitconfig med f.eks følgende indhold

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

Du kan også finstyre, hvad du vil have farvet på hvilken måde, f.eks.

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

Jeg håber, det får dig i gang. Og selvfølgelig har du brug for en terminal, der understøtter farve.

Kommentarer

  • Jeg synes det kan være værd at sætte git config –global color.ui auto (@Evgeny ‘ s svar) øverst på dit … Jeg tror, at ‘ sandsynligvis er, hvad de fleste er leder efter. Jeg ‘ har opstemt begge … Jeg ‘ Jeg siger bare, af hensyn til Internettet, som det kommer her, tror jeg en mange mennesker vil bare have den enkle linie. Desto bedre, hvis de får det, plus din ekstra godhed.
  • Dette fungerede perfekt for mig – i sektionen [color "status"] tilføjede jeg branch = yellow.
  • du kan tilføje [farve] sektion til projektet ‘ s .git / config-fil også
  • Og dig kan bare indstille en konfigurationsvariabel til en enkelt påkaldelse af en git-kommando: stackoverflow.com/a/18304605/134044

Svar

Du vil sandsynligvis bruge

git config --global color.ui auto 

auto del siger, at git kun vil prøve at bruge farve på terminaler, der understøtter det, og du får ikke ANSI-sekvenser, hvis du f.eks. Omdirigerer output af git-kommandoer til en fil. At indstille det til true er det samme som auto, og dette er også standard siden Git 1.8.4.

color.ui er en metakonfiguration, der inkluderer alle de forskellige color.* -konfigurationer, der er tilgængelige med git-kommandoer.

Dette forklares dybtgående i git help config.

Kommentarer

  • Kan du forklare forskellen mellem color.ui true (som auto peger på) versus always? Jeg læste dokumenterne , men jeg får stadig ikke forskellen.
  • @chharvey color.ui = auto + git diff | less – ingen farver, color.ui = always + git diff | less – farvet output. LESS=-R er underforstået.

Svar

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

Kommentarer

  • FYI, kun dette fungerede for git version 1.5.2.1, andre svar gjorde ikke ‘ t.

Svar

Det accepterede svar giver den mest almindelige løsning. Hvis du af en eller anden grund ikke behøver at ændre konfigurationen permanent, som den løsning gør, kan du tilsidesætte konfigurationen for en enkelt git-kommando:

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

For eksempel :

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

Testet: understøttet af git 2.4.6, ikke understøttet af git 1.7.1.

Kommentarer

  • For alle andre, der prøver at få farve, når de går til less som jeg lige var, kan du lave less videresend farveflugttegnene til terminalen via less -R.
  • Hvornår blev denne funktion tilføjet?

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 deaktiver al / det meste af farvelægningen 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 ikke ‘ t ønsker at slå fra farver, snarere at slå til farver . I OP erklærede han, hvordan man skal gøre det for git og ønsker en måde at gøre det på i en mere global forstand. Hvis du kender en sådan metode, skal du redigere dit svar for at forklare det.
  • nogle gange leder folk efter noget nært beslægtet, men lidt anderledes – men tak for nedstemningen.
  • Jeg kunne godt lide it @theRiley

Svar

For en farvet git diff piped i less fungerer dette:

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

Svar

Du kan gøre dette med Farve for vilkårlig kommandooutput . Det fungerer for det meste, men jeg har ikke fundet ud af, hvordan jeg kan omgå en fejl, hvor meddelelser, der forventer input ikke vises, og du ikke bare kan skrive det kendte nødvendige input og trykke på enter for at fortsætte i alle tilfælde.

Eksempel på ~/.acoc.conf til git:

# git [git/ae] /.*(error:.*)/ red+bold /.*(warning:.*)/ yellow /.*(hint:.*)/ magenta /.*(up-to-date).*/ green+bold /.*(nothing to commit).*/ green /^(\+.*)/ green /^(-.*)/ red 

. .som fungerer pænt sammen med alias git="acoc git" i .bash_profile.

Kommentarer

  • Kan du dele din konfiguration til acoc?
  • Nvm, det var let at skrive. 🙂 Tilføjet til svaret.

Svar

Jeg ved, at indlægget er fire år gammelt, men ingen svarede fra min lejr, farveblinden. Hvis du kan skelne farver, ignorere mit indlæg.

“git status” f.eks. lægger tekst ud, der er hvid på baggrund / sort på hvid baggrund (læsbar), mørkegrå til slettet (ulæselige mod en sort baggrund, men læselig mod en hvid baggrund) og mellemgrå for en dded (byg læseligt på sort baggrund, ulæseligt på hvid baggrund). Jeg plejede at skifte baggrunden for mit terminalvindue til / fra hvid / sort, så jeg kunne læse den ulæselige tekst. En simpel løsning er mere:

 git status | more 

Dette gør al teksten læsbar i et standard terminalvindue i hvid eller sort baggrund.

Kommentarer

  • Du kan også ændre konfigurationen for at indstille alt som standard til ingen farve (color.ui = never).

Svar

For at farvelægge output af git diff kan du tilføje en farve.diff sektion til ~ / .gitconfig. For eksempel:

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

Her er 154 og 196 ANSI 256-farve koder. For flere detaljer se man git config.

Svar

Se på https://github.com/dandavison/delta til syntaks-farvet sprog-fremhævning af (git) diff-output og farvet fremhævning af tilføjede / fjernede linjer i diff .

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *