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 jegbranch = 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
(somauto
peger på) versusalways
? 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 laveless
videresend farveflugttegnene til terminalen vialess -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 .