Existuje způsob, jak barevný výstup pro git (nebo jakýkoli příkaz)?
Zvažte:
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
A
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 #
Výstup vypadá stejně, ale informace jsou úplně jiné: soubor přešel z nestádiovaného do stagingu.
Existuje způsob vybarvit výstup? Například soubory, které nejsou ve fázích, jsou červené, ve fázích jsou zelené?
Nebo dokonce Changes not staged for commit:
na červenou a # Changes to be committed:
na zelenou?
Práce v Ubuntu.
EDIT: Googling našel tuto odpověď, která funguje skvěle: git config --global --add color.ui true
.
Existuje však nějaké obecnější řešení pro přidání barvy do výstup příkazu?
Komentáře
- Chcete něco, co zbarví všechny výstupy příkazu? Jak by vědělo, které části mají být vybarveny?
- Myslím, že kdyby existoval způsob, jak to nakonfigurovat pomocí regexu: Každá barva by mohla mít počáteční regex. A mohl by existovat výchozí barevný regulární výraz pro vypnutí všech barev. A pokud se zobrazí text “ foo „, zobrazte jej v určité barvě …
Odpověď
Ve svém ~/.gitconfig
můžete vytvořit sekci [color]
. div> s např následující obsah
[color] diff = auto status = auto branch = auto interactive = auto ui = true pager = true
Můžete také jemně ovládat, co chcete mít vybarvené, např.
[color "status"] added = green changed = red bold untracked = magenta bold [color "branch"] remote = yellow
Doufám, že tím začnete. A samozřejmě potřebujete terminál, který podporuje barvu.
Komentáře
- Myslím, že by stálo za to dát git config –global color.ui auto (@Evgeny ‚ s odpovědí) v horní části tvé … Myslím, že ‚ pravděpodobně bude tím, čím většina lidí je hledat. ‚ jsem hlasoval pro oba … Já ‚ jen říkám, kvůli internetu, který sem přichází, si myslím spousta lidí chce jen tu jednoduchou liniovou linku. O to lépe, když to dostanou, plus vaše extra dobroty.
- Toto pro mě fungovalo perfektně – v sekci
[color "status"]
jsem přidalbranch = yellow
. - Do projektu ‚ s .git / config můžete také přidat sekci [color]
- A vy stačí nastavit konfigurační proměnnou pro jedno vyvolání příkazu git: stackoverflow.com/a/18304605/134044
Odpověď
Pravděpodobně budete chtít použít
git config --global color.ui auto
říká, že git se pokusí použít barvu pouze na terminálech, které to podporují, a sekvence ANSI nedostanete, pokud například přesměrujete výstup příkazů git do souboru. Nastavení na true
je stejné jako auto
a toto je také výchozí nastavení od Git 1.8.4.
color.ui
je meta konfigurace, která zahrnuje všechny různé color.*
konfigurace dostupné pomocí příkazů git.
Toto je vysvětleno podrobně v git help config
.
Komentáře
- Můžete vysvětlit rozdíl mezi color.ui
true
(na kteréauto
ukazuje) versusalways
? Přečetl jsem si dokumenty , ale stále mi nedochází k rozdílům. - @chharvey
color.ui = auto
+git diff | less
– žádné barvy,color.ui = always
+git diff | less
– barevný výstup.LESS=-R
je implicitní.
Odpověď
git config --global color.ui auto git config --global color.branch auto git config --global color.status auto
Komentáře
- FYI, Pouze to fungovalo pro git verze 1.5.2.1, ostatní odpovědi ne ‚ t.
Odpověď
Přijatá odpověď poskytuje nejběžnější řešení. Pokud z jakéhokoli důvodu nemusíte trvale měnit konfiguraci, což toto řešení dělá, můžete přepsat konfiguraci pro jeden příkaz git:
git -c color.ui=always <usual git command and options>
Například :
git -c color.ui=always status git -c color.ui=always diff
Testováno: podporováno v git 2.4.6, není podporováno v git 1.7.1.
Komentáře
- Pro kohokoli jiného, kdo se pokouší získat barvu při pipování do
less
jako jsem právě byl, můžete udělatless
předat barevné únikové znaky terminálu pomocíless -R
. - Kdy byla tato funkce přidána?
Odpověď
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
Odpověď
nebo vypnout všechny / většinu zabarvení pomocí:
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
komentářů
- OP se nesnažilo ‚ vypnout vypnout barvy, spíše zapnout zapnout barvy . V OP uvedl, jak to udělat pro
git
, a chce nějaký způsob, jak to udělat v globálnějším smyslu. Pokud znáte takovou metodu, upravte svou odpověď tak, aby to bylo vysvětleno. - Někdy lidé hledají něco úzce souvisejícího, ale trochu jiného – ale díky za hlasování.
- Líbilo se mi it @theRiley
Odpověď
Pro barevné git diff
piped do less
to funguje:
git -c color.diff=always diff [...] | less -R
Odpovědět
To lze provést pomocí libovolného barevného výstupu příkazu . Většinou to funguje, ale nepřišel jsem na to, jak obejít chybu, kde se nezobrazí výzvy očekávající vstup a vy prostě nemůžete zadat známý potřebný vstup a v každém případě pokračovat stisknutím klávesy Enter.
Příklad ~/.acoc.conf
pro git
:
# git [git/ae] /.*(error:.*)/ red+bold /.*(warning:.*)/ yellow /.*(hint:.*)/ magenta /.*(up-to-date).*/ green+bold /.*(nothing to commit).*/ green /^(\+.*)/ green /^(-.*)/ red
. .který funguje dobře spolu s alias git="acoc git"
v .bash_profile
.
Komentáře
- Můžete sdílet svou konfiguraci pro
acoc
? - Nvm, psalo se to snadno. 🙂 Přidáno k odpovědi.
Odpověď
Vím, že příspěvek je starý čtyři roky, ale nikdo z mého tábora neodpověděl, barevně slepý. Pokud můžete rozlišovat barvy, ignorovat můj příspěvek.
„stav git“ například vyřadí text, který je na pozadí bílý / černý na bílém pozadí (čitelný), tmavě šedý pro odstraněný (nečitelný na černém pozadí, ale čitelný proti bílé pozadí) a středně šedá pro a dded (ječmen čitelný na černém pozadí, nečitelný na bílém pozadí). Přepínal jsem pozadí okna terminálu na / z bílé / černé, abych mohl číst nečitelný text. Jednoduché řešení je více:
git status | more
Díky tomu je veškerý text čitelný i na standardním bílém nebo černém pozadí terminálového okna.
Komentáře
- Můžete také změnit konfiguraci a ve výchozím nastavení nastavit vše na žádnou barvu (
color.ui = never
).
Odpověď
K vybarvení výstupu git diff
můžete přidat sekci color.diff do ~ / .gitconfig. Například:
[color "diff"] new = bold italic 154 old = bold italic 196
Zde 154
a 196
jsou ANSI 256-barevné kódy. Další podrobnosti naleznete v man git config
.
Odpověď
Podívejte se na https://github.com/dandavison/delta pro barevné zvýraznění syntaxe výstupu (git) diff a barevné zvýraznění přidaných / odstraněných řádků v rozdílu .