Najkrótsze możliwe wyjście z git log zawierające autora i datę

Jak mogę pokazać wyjście git log z (przynajmniej) tą informacją:

* author
* commit date
* change

Chcę skompresować to do jednej linii na wpis dziennika. Jaki jest najkrótszy możliwy format?

(próbowałem --format=oneline ale to nie pokazuje daty)

Author: JAM, 2009-09-17

11 answers

git log --pretty=format:"%h%x09%an%x09%ad%x09%s"

Wykonałem swoją pracę. Wyjście to:
  fbc3503 mads    Thu Dec 4 07:43:27 2008 +0000   show mobile if phone is null...   
  ec36490 jesper  Wed Nov 26 05:41:37 2008 +0000  Cleanup after [942]: Using timezon
  ae62afd tobias  Tue Nov 25 21:42:55 2008 +0000  Fixed #67 by adding time zone supp
  164be7e mads    Tue Nov 25 19:56:43 2008 +0000  fixed tests, and a 'unending appoi
  93f1526 jesper  Tue Nov 25 09:45:56 2008 +0000  adding time.ZONE.now as time zone 
  2f0f8c1 tobias  Tue Nov 25 03:07:02 2008 +0000  Timezone configured in environment
  a33c1dc jesper  Tue Nov 25 01:26:18 2008 +0000  updated to most recent will_pagina

Zainspirowany pytaniem stoskoverflow: "Git log output like svn LS-v" , dowiedziałem się, że mogę dodać dokładnie te paramy, których potrzebowałem.

Aby skrócić datę (nie pokazując godziny) użyj --date=short

Gdybyś był ciekaw, jakie są różne opcje:
%h = Skrót commit hash
%x09 = tab (znak kodu 9)
%an = nazwisko autora
%ad = Data autora (format -- Data = opcja)
%s = temat
Od kernel.org/pub/software/scm/git/docs/git-log.html (sekcja ładne formaty) przez komentarz Vivek.

 480
Author: Jesper Rønn-Jensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-12 10:18:04

Używam tych dwóch .ustawienia gitconfig:

[log]
  date = relative
[format]
  pretty = format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset

% ad jest datą autora, która może być pominięta przez --date lub opcję określoną w [log] stanza in .gitconfig. Lubię relatywną datę, ponieważ daje natychmiastowe poczucie, kiedy coś zostało dostarczone. Wyjście wygląda tak:

6c3e1a2 2 hours ago [email protected] lsof is a dependency now.
0754f18 11 hours ago [email protected] Properly unmount, so detaching works.
336a3ac 13 hours ago [email protected] Show ami registration command if auto register fails
be2ad45 17 hours ago [email protected] Fixes #6. Sao Paolo region is included as well.
5aed68e 17 hours ago [email protected] Shorten while loops

To wszystko jest oczywiście w kolorze, więc łatwo jest odróżnić różne części linii dziennika. Jest to również domyślne przy wpisywaniu git log ze względu na sekcję [format].

2014 Aktualizacja: Ponieważ git obsługuje teraz padding, mam ładną poprawkę do powyższej wersji:

pretty = format:%C(yellow)%h %Cblue%>(12)%ad %Cgreen%<(7)%aN%Cred%d %Creset%s

Ta prawa wyrównuje daty względne, a lewa wyrównuje nazwy committerów, co oznacza, że otrzymujesz wygląd kolumny, który jest łatwy dla oczu.

zrzut ekranu

  ss#1

Aktualizacja 2016: ponieważ podpisywanie commitów GPG staje się rzeczą, pomyślałem, że zaktualizuję ten post z wersją, która zawiera weryfikację podpisu (na zrzucie ekranu jest to litera magenta po prawej stronie po zatwierdzeniu). Krótkie wyjaśnienie flagi:

% G? w przypadku braku podpisu, w przypadku braku podpisu, znak "G" oznacza dobry (poprawny) podpis, znak "B" oznacza zły podpis, znak "U" oznacza dobry podpis o nieznanej ważności i znak "N" oznacza brak podpisu

Inne zmiany to:

  • kolory są teraz usuwane, jeśli wyjście jest do czegoś innego niż tty (co jest przydatne do smarowania itp.)
  • git log -g zawiera teraz selektor reflog.
  • Zapisz 2 pareny na refnames i umieść je na end (aby zachować wyrównanie kolumn)
  • skróć daty względne, jeśli są zbyt długie (np. 3 years, 4..)
  • obcinaj nazwy komend (może to być trochę krótkie jak na niektóre ppl, po prostu zmień %<(7,trunc) lub sprawdź git .funkcja mailmap do skracania nazw commiterów)

Oto konfiguracja:

pretty = format:%C(auto,yellow)%h%C(auto,magenta)% G? %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(7,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D

Wyrównanie wszystkich kolumn jest teraz zachowane o wiele lepiej kosztem niektórych (miejmy nadzieję) bezużytecznych znaków. Możesz edytować, jeśli masz jakieś ulepszenia, Chciałbym żeby kolor wiadomości był zależny od tego czy commit jest podpisany, ale chyba nie jest to możliwe.

zrzut ekranu

Zrzut ekranu z git log

 150
Author: andsens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 08:25:06
git log --pretty=format:"%H %an %ad"

Użyj --date=, aby ustawić format daty

git log --pretty=format:"%H %an %ad" --date=short
 84
Author: knittl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-17 20:08:50

Tig jest możliwą alternatywą dla polecenia git log, dostępnego na głównych dystrybucjach open source *nix.

Na Debianie lub ubuntu spróbuj zainstalować i uruchomić w następujący sposób:

$ sudo apt-get install tig

(tig zostaje zainstalowany)

$ tig

(log jest wyświetlany w pagerze w następujący sposób, a hash aktualnego zatwierdzenia jest wyświetlany na dole)

2010-03-17 01:07 ndesigner      changes to sponsors list
2010-03-17 00:19 rcoder         Raise 404 when an invalid year is specified.
2010-03-17 00:06 rcoder         Sponsors page now shows sponsors' level.
-------------------------- skip some lines ---------------------------------
[main] 531f35e925f53adeb2146dcfc9c6a6ef24e93619 - commit 1 of 32 (100%)

Ponieważ markdown nie obsługuje kolorowania tekstu, wyobraź sobie: column 1: blue; column 2: green; column 3: domyślny kolor tekstu. Ostatnia linia, zaznaczona. Naciśnij Q lub q , aby wyjść.


tig uzasadnia kolumny bez postrzępionych krawędzi , czego nie gwarantuje karta ascii (%x09).

Dla krótki format daty hit capital D (Uwaga: małe litery d otwiera widok różnic.) Skonfiguruj go na stałe dodając show-date = short do~/.tigrc; lub w sekcji [tig] w .git / configure lub ~/.gitconfig.

Aby zobaczyć cały zmiana:

  • hit Enter . W dolnej części okna otworzy się okienko podrzędne.
  • użyj k, j klawisze do przewijania zmiany w panelu podrzędnym.
  • w tym samym czasie, użyj w górę, down keys to move from commit to commit.

Ponieważ tig jest oddzielny od Gita i najwyraźniej specyficzny dla *nix, prawdopodobnie wymaga Cygwina do instalacji w systemie windows. Ale dla Fedory wierzę, że polecenia Instalacji są $ su, (enter root password), # yum install tig. Dla freebsd spróbuj % su, (enter root password), # pkg_add -r tig.


Przy okazji, tig jest dobry do znacznie więcej niż Szybki podgląd dziennika: screeny & Manual

 44
Author: Joe Generic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-12 01:30:36
git log --pretty=format:'%h %ad %s (%an)' --date=short  

Lub

git log --pretty=format:'%h %ad %s | %an' --date=short  

...riffing na odpowiedź cdunn2001 powyżej: chciałbym stracić e-mail autora i zawierać tylko nazwisko autora, jak na Jesper i knittl, ale zgodnie z ideą cdunn2001 utrzymanie wyjścia w kolumnach o stałej szerokości dla ułatwienia czytania(świetny pomysł !). Zamiast oddzielnej lewej, uzasadnionej kolumny dla nazwy autora, zawijam jednak tę flagę na końcu polecenia nawiasem lub wyrównuję ją rurą. (Może to być każda postać, która służy jako wizualna pomoc w odczycie wyjścia...chociaż może mieć sens unikanie ukośników do tyłu lub do przodu w celu zmniejszenia mylenia wyjścia z katalogiem lub czymś takim.)

Przykładowe wyjście:

6fdd155 2015-08-10 Fixes casting error in doSave | John Doe
c4f4032 2015-08-10 Fix for IE save. Add help button. | Jane
29a24a6 2015-08-10 Fixes bug in Course | Mac
 32
Author: Sean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-11 14:01:23

Użyj predefiniowanego aliasu git, tzn.:

$ git work

Utworzony raz komendą:

$ git config --global alias.work 'log --pretty=format:"%h%x09%an%x09%ad%x09%s"'

Https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases

Lub bardziej kolorowe z grafem:

$ git config --global alias.work 'log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all'

Tutaj wpisz opis obrazka

 16
Author: Míra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-25 15:50:32

Zapraszam do korzystania z tego:

git log --pretty="%C(Yellow)%h  %C(reset)%ad (%C(Green)%cr%C(reset))%x09 %C(Cyan)%an: %C(reset)%s"

Look:

# patrz

 13
Author: Hannes Schneidermayer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-28 12:36:32
git log --pretty=format:'%h %ad  %s%x09%ae' --date=short

Wynik:

e17bae5 2011-09-30  Integrate from development -> main      [email protected]
eaead2c 2011-09-30  More stuff that is not worth mentioning [email protected]
eb6a336 2011-09-22  Merge branch 'freebase' into development        [email protected]

Stała szerokość rzeczy jest pierwsza. Najmniej ważna część - domena e-mail - jest ostatnia i łatwa do filtrowania.

 7
Author: cdunn2001,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-08 12:54:50

Aby pokazać commity, które wystawiłem, które są gotowe do push I do

git log remotes/trunk~4..HEAD --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" --date=short | awk -F'\t' '{gsub(/[, ]/,"",$2);gsub(/HEAD/, "\033[1;36mH\033[00m",$2);gsub(/master/, "\033[1;32mm\033[00m",$2);gsub(/trunk/, "\033[1;31mt\033[00m",$2);print $1 "\t" gensub(/([\(\)])/, "\033[0;33m\\1\033[00m","g",$2) $3}' | less -eiFRXS

Wyjście wygląda tak:

ef87da7 2013-01-17 haslers      (Hm)Fix NPE in Frobble
8f6d80f 2013-01-17 haslers      Refactor Frobble
815813b 2013-01-17 haslers      (t)Add Wibble to Frobble
3616373 2013-01-17 haslers      Add Foo to Frobble
3b5ccf0 2013-01-17 haslers      Add Bar to Frobble
a1db9ef 2013-01-17 haslers      Add Frobble Widget

Gdzie pierwsza kolumna pojawia się w Kolorze Żółtym, A' H '' m ' I ' t ' w nawiasie pokazują głowę, master i tułów i pojawiają się w zwykłych kolorach "--decorate"

Tutaj jest z podziałem linii, więc możesz zobaczyć, co robi:

git log remotes/trunk~4..HEAD --date=short
    --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s"
    | awk -F'\t' '{
         gsub(/[, ]/,"",$2);
         gsub(/HEAD/, "\033[1;36mH\033[00m",$2);
         gsub(/master/, "\033[1;32mm\033[00m",$2);
         gsub(/trunk/, "\033[1;31mt\033[00m",$2);
         print $1 "\t" gensub(/([\(\)])/, "\033[0;33m\\1\033[00m","g",$2) $3}'

Aliased to "inscenizowane" z:

git config alias.staged '!git log remotes/trunk~4..HEAD --date=short --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" | awk -F"\t" "{gsub(/[, ]/,\"\",\$2);gsub(/HEAD/, \"\033[1;36mH\033[00m\",\$2);gsub(/master/, \"\033[1;32mm\033[00m\",\$2);gsub(/trunk/, \"\033[1;31mt\033[00m\",\$2);print \$1 \"\t\" gensub(/([\(\)])/, \"\033[0;33m\\\\\1\033[00m\",\"g\",\$2) \$3}"'

(czy jest jakiś łatwiejszy sposób, aby od tego uciec? to było trochę trudne do work out what needed escaping)

 3
Author: Sam Hasler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-21 11:47:10

Wszystkie powyższe sugestie używają %s placeholder dla tematu. Zalecam użycie %B, ponieważ %sformatowanie zachowuje nowe linie i pojawia się zgnieciony komunikat commit wielu linii.

git log --pretty=format:"%h%x09%an%x09%ai%x09%B"
 1
Author: palik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:45

Uruchom to w folderze projektu:

$ git log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all

I jeśli chcesz, dodaj ten wiersz do swojego~/.gitconfig:

[alias]
    ...
    list = log --pretty=format:\"%C(yellow)%h %ar %C(auto)%d %Creset %s, %Cblue%cn\" --graph --all
 0
Author: MUH Mobile Inc.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-09 02:03:37