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)
11 answers
git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
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.
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 ekranuAktualizacja 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 ekranuWarning: 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
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
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
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'
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:
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.
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)
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ż %s
formatowanie zachowuje nowe linie i pojawia się zgnieciony komunikat commit wielu linii.
git log --pretty=format:"%h%x09%an%x09%ai%x09%B"
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
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