Is er een manier om uitvoer in kleur te krijgen voor git (of een ander commando)?
Overweeg:
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
En
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 #
De uitvoer ziet er hetzelfde uit, maar de informatie is totaal anders: het bestand is van unstaged naar gestaged gegaan voor commit.
Is er een manier de output inkleuren? Bestanden die niet-gestaged zijn, zijn bijvoorbeeld rood, gestaged zijn groen?
Of zelfs Changes not staged for commit:
naar rood en # Changes to be committed:
naar groen?
Werken in Ubuntu.
BEWERK: Googelen vond dit antwoord dat geweldig werkt: git config --global --add color.ui true
.
Er is echter een algemenere oplossing voor het toevoegen van kleur aan een opdrachtuitvoer?
Opmerkingen
- Wil je iets dat alle opdrachtuitvoer kleurt? Hoe zou het weten welke onderdelen moeten worden gekleurd?
- Ik denk dat als er een manier was om het te configureren met regex: elke kleur zou een startregex kunnen hebben. En er kan een standaardkleurenregex zijn om alle kleuren uit te schakelen. En als tekst ” foo ” verschijnt, geef deze dan in een bepaalde kleur weer …
Answer
U kunt een sectie [color]
maken in uw ~/.gitconfig
met bijv de volgende inhoud
[color] diff = auto status = auto branch = auto interactive = auto ui = true pager = true
U kunt ook nauwkeurig bepalen wat u op welke manier gekleurd wilt hebben, bijv.
[color "status"] added = green changed = red bold untracked = magenta bold [color "branch"] remote = yellow
Ik hoop dat dit je op weg helpt. En je hebt natuurlijk een terminal nodig die kleur ondersteunt.
Reacties
- Ik denk dat het de moeite waard is om git config –global color.ui te plaatsen auto (@Evgeny ‘ s antwoord) bovenaan de jouwe … Ik denk dat ‘ waarschijnlijk is wat de meeste mensen zijn zoeken naar. Ik ‘ heb beide gestemd … Ik ‘ m alleen maar te zeggen: omwille van het internet zoals het hier komt, denk ik dat een veel mensen willen gewoon die simpele voering. Des te beter als ze het krijgen, plus jouw extra goedheid.
- Dit werkte perfect voor mij – in de sectie
[color "status"]
heb ik . - je kunt ook [color] sectie toevoegen aan project ‘ s .git / config-bestand
- En jij kan gewoon een configuratievariabele instellen voor een enkele aanroep van een git-commando: stackoverflow.com/a/18304605/134044
Antwoord
Waarschijnlijk wilt u
git config --global color.ui auto
De auto
deel zegt dat git alleen zal proberen om kleur te gebruiken op terminals die het ondersteunen, en je zult geen ANSI-sequenties krijgen als je de uitvoer van git-commandos omleidt naar bijvoorbeeld een bestand. Het instellen op true
is hetzelfde als auto
, en dit is ook de standaard sinds Git 1.8.4.
De color.ui
is een meta-configuratie die alle verschillende color.*
configuraties bevat die beschikbaar zijn met git-commandos.
Dit wordt uitgelegd diepgaand in git help config
.
Reacties
- Kun je het verschil uitleggen tussen color.ui
true
(waarnaarauto
verwijst) versusalways
? Ik heb de documenten gelezen, maar ik begrijp het verschil nog steeds niet. - @chharvey
color.ui = auto
+git diff | less
– geen kleuren,color.ui = always
+git diff | less
– gekleurde uitvoer.LESS=-R
is geïmpliceerd.
Antwoord
git config --global color.ui auto git config --global color.branch auto git config --global color.status auto
Reacties
- Ter info, dit werkte alleen voor git versie 1.5.2.1, andere antwoorden niet ‘ t.
Antwoord
Het geaccepteerde antwoord geeft de meest gebruikelijke oplossing. Als je om welke reden dan ook de configuratie niet permanent hoeft te wijzigen, wat die oplossing doet, kun je de configuratie voor een enkel git-commando overschrijven:
git -c color.ui=always <usual git command and options>
Bijvoorbeeld :
git -c color.ui=always status git -c color.ui=always diff
Getest: ondersteund op git 2.4.6, niet ondersteund op git 1.7.1.
Opmerkingen
- Voor iedereen die kleur probeert te krijgen bij het doorspoelen naar
less
zoals ik net was, kun jeless
geef de kleur escape-tekens door aan de terminal vialess -R
. - Wanneer is deze functie toegevoegd?
Antwoord
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
Antwoord
of schakel alle / de meeste inkleuring uit 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
Reacties
- OP wasn ‘ Ik wil kleuren uitschakelen , in plaats van aan kleuren . In het OP verklaarde hij hoe hij het moet doen voor
git
en wil een manier om het in een meer globale zin te doen. Als je een dergelijke methode kent, bewerk dan je antwoord om dat uit te leggen. - soms zijn mensen op zoek naar iets dat nauw verwant is, maar net iets anders – maar bedankt voor de downvote.
- Ik vond het leuk it @theRiley
Antwoord
Voor een gekleurde git diff
doorgesluisd in less
, dit werkt:
git -c color.diff=always diff [...] | less -R
Antwoord
U kunt dit doen met Willekeurige Commando Output Colourer . Het werkt meestal, maar ik weet niet hoe ik een bug moet omzeilen waarbij prompts die invoer verwachten niet worden weergegeven en je kunt niet gewoon de bekende benodigde invoer typen en op enter drukken om in alle gevallen door te gaan.
Voorbeeld van ~/.acoc.conf
voor git
:
# git [git/ae] /.*(error:.*)/ red+bold /.*(warning:.*)/ yellow /.*(hint:.*)/ magenta /.*(up-to-date).*/ green+bold /.*(nothing to commit).*/ green /^(\+.*)/ green /^(-.*)/ red
. . wat goed werkt samen met alias git="acoc git"
in .bash_profile
.
Reacties
- Kun je je configuratie voor
acoc
delen? - Nvm, het was gemakkelijk te schrijven. 🙂 Toegevoegd aan het antwoord.
Antwoord
Ik weet dat de post vier jaar oud is, maar niemand reageerde vanuit mijn kamp, de kleurenblind. Als je kunt onderscheid kleuren, negeer mijn bericht.
“git status” plaatst bijvoorbeeld tekst die wit is op de achtergrond / zwart op een witte achtergrond (leesbaar), donkergrijs voor verwijderd (onleesbaar tegen een zwarte achtergrond maar leesbaar tegen een witte achtergrond) en medium grijs voor een dded (gerst leesbaar op zwarte achtergrond, onleesbaar op witte achtergrond). Vroeger schakelde ik de achtergrond van mijn terminalvenster van / naar wit / zwart, zodat ik de onleesbare tekst kon lezen. Een eenvoudige oplossing is meer:
git status | more
Dit maakt alle tekst leesbaar op een standaard terminalvenster met witte of zwarte achtergrond.
Opmerkingen
- Je kunt ook de configuratie wijzigen om alles standaard in te stellen op geen kleur (
color.ui = never
).
Answer
Om de output van git diff
te kleuren, kun je een color.diff-sectie toevoegen aan ~ / .gitconfig. Bijvoorbeeld:
[color "diff"] new = bold italic 154 old = bold italic 196
Hier zijn 154
en 196
ANSI 256 kleurencodes. Voor meer details zie man git config
.
Antwoord
Kijk eens naar https://github.com/dandavison/delta voor syntaxisaccentuering van (git) diff-uitvoer in gekleurde talen en gekleurde accentuering van toegevoegde / verwijderde regels in de diff .