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řidal branch = 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) versus always? 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ělat less 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 .

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *