Jak pokolorować konsolę Git?

371

Niedawno zauważyłem, że gitkonsola w systemie Windows jest kolorowa, np. Zielona dla dodatków, czerwona dla usunięć itp. Jak pokolorować gitkonsolę w ten sposób?

Aby go zainstalować, użyłem polecenia: $ sudo apt-get install git-core

MauroPorras
źródło
6
Począwszy od git1.8.4, domyślnie powinny być widoczne kolory. Zobacz moją odpowiedź poniżej .
VCC
1
@VonC git 1.9.1 na Ubuntu 14.04, nie miało miejsca. Musiałem sam skonfigurować konfigurację z odpowiedzi JoelPurry.
Izkata
1
@Izkata dziwne, przetestuję to później, ale co z gitem 2.1+? (jak skomentowałem poniżej w stackoverflow.com/questions/10998792/... )
VonC

Odpowiedzi:

682

Jak zauważył przez @VonC , color.uidomyślnych do autoponieważ Git 1.8.4


Od pytania stosu wymiany Unix i Linuxa Jak pokolorować wyjście git? i odpowiedź @Evgeny :

git config --global color.ui auto

color.uiJest konfiguracja meta, która obejmuje wszystkie różne color.*konfiguracje dostępne z gitpoleceniami. Wyjaśniono to szczegółowo w git help config.

Zasadniczo jest to więc łatwiejsze i bardziej przyszłościowe niż color.*oddzielne ustawianie różnych ustawień.

Szczegółowe wyjaśnienie z git configdokumentacji :

color.ui: Ta zmienna określa wartość domyślną dla zmiennych takich jak color.diffi, color.grepktóre kontrolują użycie koloru dla rodziny poleceń. Jego zakres będzie się rozszerzał, gdy więcej poleceń nauczy się konfiguracji, aby ustawić domyślną --coloropcję. Ustaw tę opcję, alwaysjeśli chcesz, aby wszystkie dane wyjściowe nieprzeznaczone do konsumpcji maszynowej używały kolorów, truelub autojeśli chcesz, aby takie dane wyjściowe używały kolorów podczas zapisywania na terminalu, falselub neverjeśli wolisz, aby polecenia git nie używały kolorów, chyba że zostało to wyraźnie włączone w niektórych inna konfiguracja lub --coloropcja.

Joel Purra
źródło
11
Działa to również na OSX, nie tylko Linux, jak zadawano pytanie
StackExchange What The Heck
Prawdopodobnie trzeba dodać „prawda” na końcu. git config --global color.ui auto true
Vamshi
6
@ Skeptor: nie, autowystarczy.
Joel Purra
2
@Phani: tak, jest trwały.
Joel Purra,
5
Jest trwały, ponieważ dodaje ui = autopozycję do [color]sekcji w ~/.gitconfigpliku użytkownika .
Andris
55

Na przykład patrz https://web.archive.org/web/20080506194329/http://www.arthurkoziel.com/2008/05/02/git-configuration/

Interesującą częścią jest

Kolorowa produkcja:

git config --global color.branch auto
git config --global color.diff auto
git config --global color.interactive auto
git config --global color.status auto
KingCrunch
źródło
3
Używam starszej wersji git i ustawienie color.ui autonie działało dla mnie, to zadziałało. Dziękuję Ci.
Matt K
30

Dodaj do pliku .gitconfig następny kod:

  [color]
    ui = auto
  [color "branch"]
    current = yellow reverse
    local = yellow
    remote = green
  [color "diff"]
    meta = yellow bold
    frag = magenta bold
    old = red bold
    new = green bold
  [color "status"]
    added = yellow
    changed = green
    untracked = cyan
Zwycięzca
źródło
7

Git automatycznie pokoloruje większość wydruków, jeśli o to poprosisz. Możesz uzyskać bardzo szczegółowe informacje na temat tego, co chcesz pokolorować i jak; ale aby włączyć domyślną kolorystykę terminala, ustaw color.ui na true:

git config --global color.ui true
Tanmay
źródło
6

W Ubuntu lub innej platformie (tak, Windows też!); począwszy od git1.8.4 , który został wydany 23.08.2013 , nie będziesz musiał nic robić :

Wiele samouczków uczy użytkowników, aby ustawić „color.ui” na „auto” jako pierwszą rzecz po ustawieniu „ user.name/email” na wprowadzenie się do Git. Teraz zmienna ma domyślną wartość „ auto”.

Domyślnie zobaczysz kolory.

VonC
źródło
2
(cóż, nawet Windows, w zależności od terminala: stackoverflow.com/a/12133244/6309 )
VonC
2
Używając Ubuntu w 2014 roku, zainstalowałem git i nadal musiałem działać git config --global color.ui auto. To samo dotyczy mojego komputera Mac, jedynym domyślnym autojest Git Bash na moim komputerze z systemem Windows.
sargas
1
@sargas Oczywiście, musisz zainstalować z PPA : launchpad.net/~git-core/+archive/ppa (dla Ubuntu) lub git-scm.com/download/mac (dla komputerów Mac)
VonC
1
Rozumiem, więc to zależy od źródła. Doceniam twój czas na wypowiedź na ten temat.
sargas
6

Dodaj do ~/.gitconfigpliku:

[color]
  ui = auto

Dba o wszystkie twoje polecenia git.

Chuntao Lu
źródło
5

Innym sposobem jest edycja .gitconfig(utwórz go, jeśli nie istnieje), na przykład:

vim ~/.gitconfig

a następnie dodaj:

[color]
  diff = auto
  status = auto
  branch = auto
atupal
źródło
3
jak wspomniano @ chuntao-lu, [color] ui = autowystarczy.
Chacko Mathew
5

GIT domyślnie używa kolorowych wydruków, ale w niektórych systemach, takich jak CentOS, nie jest włączony. Możesz to włączyć w ten sposób

git config --global color.ui  true 
git config --global color.ui  false 
git config --global color.ui  auto 

Tutaj możesz wybrać wymagane polecenie.

Tutaj --global jest opcjonalne, aby zastosować akcję dla każdego repozytorium w twoim systemie. Jeśli chcesz zastosować kolorowanie tylko w bieżącym repozytorium, możesz zrobić coś takiego -

 git config color.ui  true 
Deepak Dixit
źródło
1

Dzięki Git 2.18 masz większą kontrolę nad sposobem określania kolorów w konsoli.
Komenda „ git config” używa osobnych opcji, np. „ --int”, „ --bool” Itp., Aby określić, jakiego typu osoba wywołująca chce interpretować wartość .

Wprowadzono nową --type=<typename>opcję „ ”, dzięki której zdefiniowanie nowych typów byłoby łatwiejsze.

Zobacz zatwierdzenie fb0dc3b (18 kwietnia 2018 r.) I zatwierdzenie 0a8950b (09 kwietnia 2018 r.) Autorstwa Taylor Blau ( ttaylorr) .
(Połączone przez Junio ​​C Hamano - gitster- w commit e3e042b , 08 maja 2018)

builtin/config.c: obsługa --type=<type>jako preferowany alias dla--<type>

git configod dawna umożliwia osobom wywołującym dostarczenie „specyfikatora typu”, który instruuje git config(1), aby wartości przychodzące mogły być interpretowane jako ten typ, oraz (2), że wartości wychodzące są kanonizowane w ramach tego typu.

W innej serii proponujemy rozszerzenie tej funkcjonalności na --type=colori --defaultzastąpienie --get-color.

Jednak tradycyjnie używamy --colorokreślenia „pokoloruj ten wynik”, zamiast „ta wartość powinna być traktowana jako kolor”.

Obecnie git confignie obsługuje tego rodzaju koloryzacji, ale powinniśmy uważać, aby zbyt wcześnie nie przykucnąć w tej opcji, aby w razie git configpotrzeby mogła --colorona w przyszłości wspierać (w tradycyjnym sensie).

W tej łatce obsługujemy --type=<int|bool|bool-or-int|...>oprócz --int, --boolitd.
Pozwala to wyżej wspomnianej łatce na obsługę kwerendy o wartość koloru z domyślną poprzez --type=color --default=..., bez marnowania --color.

Zachowujemy historyczne zachowanie narzekania, gdy podaje się wiele --<type>flag w starszym stylu , a także rozszerzamy je na konfliktowe --type=<type>flagi w nowym stylu . --int --type=int(i jego para przemienna) nie narzeka, ale --bool --type=int(i jego para przemienna) tak.

Więc zanim miałeś, --boola --intteraz ( dokumentacja ):

--type <type>

' git config' zapewni, że wszelkie dane wejściowe lub wyjściowe są prawidłowe zgodnie z ograniczeniami danego typu i kanonizuje wartości wychodzące w <type>postaci kanonicznej.

Ważne <type>są:

  • bool”: kanonizować wartości jako „ true” lub „ false”.
  • ' int': kanonizować wartości jako proste liczby dziesiętne. Opcjonalny sufiks „ k”, „ m” lub „ g” spowoduje pomnożenie wartości przez 1024, 1048576 lub 1073741824 na wejściu.
  • bool-or-int”: kanonizuje według „ bool” lub „ int”, jak opisano powyżej.
  • ' path': kanonizuje, dodając wiodącą ~wartość do $HOMEi ~userdo katalogu domowego określonego użytkownika. Ten specyfikator nie ma wpływu podczas ustawiania wartości (ale możesz użyć git config section.variable ~/z wiersza poleceń, aby pozwolić powłoce na rozwinięcie).
  • ' expiry-date': kanonizowanie poprzez konwersję stałego lub względnego ciągu daty na znacznik czasu. Ten specyfikator nie ma wpływu na ustawienie wartości.
--bool::
--int::
--bool-or-int::
--path::
--expiry-date::
  Historical options for selecting a type specifier. Prefer instead `--type`,
(see: above).

Zauważ, że Git 2.22 (Q2 2019) wyjaśnia, że ​​„ git config --type=color ...” ma zastąpić „ git config --get-color”, ale istnieje niewielka różnica, która nie została udokumentowana, co jest teraz naprawione.

Zobacz commit cd8e759 (05 marca 2019) autor: Jeff King ( peff) .
(Połączone przez Junio ​​C Hamano - gitster- w commit f6c75e3 , 20 marca 2019)

config: --type=colorwyjście dokumentu to kompletny wiersz

Mimo że nowsza „ --type=color” opcja „ git config” ma być zgodna w górę z tradycyjną --get-coloropcją „ ”, w przeciwieństwie do tej drugiej, jej wyjście nie jest niepełną linią, której brakuje LF na końcu.
Dzięki temu jest spójny z danymi wyjściowymi innych typów, takich jak „ git config --type=bool”.

Dokumentuj to , ponieważ czasami zaskakuje niczego niepodejrzewających użytkowników.

To teraz brzmi:

--type=color [--default=<default>]jest preferowane --get-color zamiast (ale należy pamiętać, że --get-colorpominie on końcowy znak nowej linii wydrukowany przez --type=color).


Możesz zobaczyć git config --type=boolużywane z Git 2.26 (Q1 2020) do zastąpienia git config --boolwywołań w przykładowych szablonach.

Zobacz commit 81e3db4 (19 stycznia 2020 r.), Autor: Lucius Hu ( lebensterben) .
(Połączone przez Junio ​​C Hamano - gitster- w commit 7050624 , 30 stycznia 2020)

templates: naprawiono nieaktualną opcję typu --bool

Podpisano: Lucius Hu

--boolOpcja git-configjest oznaczona jako historyczne, a użytkownicy są zalecane do stosowania --type=boolzamiast.
To zatwierdzenie zastępuje wszystkie wystąpienia --boolw szablonach.

Należy również pamiętać, że nie ma innych opcji Nieaktualne typu znajdują się w tym --int, --bool-or-int, --path, lub --expiry-date.

VonC
źródło
0

patrz tutaj: https://nathanhoad.net/how-to-colours-in-git/

kroki:

  1. Otwórz ~ / .gitconfig do edycji

    vi ~ / .gitconfig

  2. Wklej następujący kod:

    [color]
      ui = auto
    [color "branch"]
      current = yellow reverse
      local = yellow
      remote = green
    [color "diff"]
      meta = yellow bold
      frag = magenta bold
      old = red bold
      new = green bold
    [color "status"]
      added = yellow
      changed = green
      untracked = cyan
    
  3. Zapisz plik.

Po prostu zmień dowolny plik w lokalnym repozytorium i zrób to

git status
Gajanan Malvade
źródło
Jest już taki sam # answer-29320572 autorstwa Victora
krytyk