Próbuję dostosować format git log
. Chcę, aby wszystkie zatwierdzenia były wyświetlane w jednym wierszu. Każdy wiersz powinien pokazywać tylko pierwszy wiersz komunikatu zatwierdzenia.
I okazało się, że git log --pretty=short
powinno wystarczyć, ale na moim komputerze to pokazuje pełny raport jak git log
robi (oprócz znacznika czasu).
Ponadto próbowałem użyć symboli zastępczych zdefiniowanych na stronie podręcznika man . Chociaż nie mogłem znaleźć polecenia skracającego dziennika. Wypróbowałem ten wiersz, git log --pretty=format:'%h : %s'
który pokazuje skrót skrótu %h
i pełny komunikat %s
w jednym wierszu.
Korzystam git version 1.7.3.1.msysgit.0
z systemu Vista.
Może ma to coś wspólnego ze sposobem, w jaki piszę moje komunikaty zatwierdzania. Oto przykład:
Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.
Tak więc w podanym przykładzie chcę, aby wynik był Added some functionality.
poprzedzony skrótem skrótu.
%s
jest tematem, a nie pełną wiadomością.short
format nie jest w jednej linii (niespodzianka!)oneline
. Jeślioneline
i%h : %s
nie chcesz, co jest z nimi nie tak? W szczególności%s
jest to temat, pierwszy wiersz komunikatu zatwierdzenia. To powinna być rzeczywiście skrócona wersja. Czy to możliwe, że dokonujesz zatwierdzeń za pomocą jednej długiej linii dla wiadomości i przeglądasz je w jakiś sposób za pomocą zawijania słów?oneline
a%s
nie wyjście, czego oczekujemy, przynajmniej na moim komputerze. Zaktualizowałem swój post za pomocą przykładu mojej wiadomości zatwierdzenia. Może to pomaga.Odpowiedzi:
Próbowałeś tego?
Problem polega na tym, że brakuje pierwszego pustego wiersza. Powyższe polecenie zwykle działa dla mnie, ale właśnie przetestowałem zatwierdzenie bez pustej drugiej linii. Mam taki sam wynik jak ty: cała wiadomość w jednym wierszu.
Pusta druga linia jest standardem w komunikatach git commit. Zachowanie, które widzisz, zostało prawdopodobnie zaimplementowane celowo.
Pierwszy wiersz komunikatu zatwierdzenia ma być krótkim opisem. Jeśli nie możesz zrobić tego w jednym wierszu, możesz użyć kilku, ale git uważa wszystko przed pierwszym pustym wierszem za „krótki opis”.
oneline
wypisuje cały krótki opis, więc wszystkie 3 wiersze.źródło
git log
do skryptu filtrującego, ale naprawdę zalecałbym napisanie krótkiego opisu z pustą linią.git log --oneline
--oneline jest wbudowanym skrótem dla „--pretty = oneline --abbrev-commit” używanych razem.cut
. To byłobyawk
totem ... (BTW matematyka P: jakie są szanse, że następny bit w prawidłowo zakodowanej sekwencji huffmana na poziomie magazynu jest włączony lub wyłączony? Wskazówka: To === 50%.)%
dla'%s'
. DO-;Czy
git log --oneline
robisz co chcesz?źródło
Lepszy i łatwiejszy dziennik git, tworząc alias . Wklej poniższy kod do terminala tylko raz na jedną sesję. Wklej kod do zshrc lub profilu bash, aby był trwały.
Wynik
Wyjście zmienione linie
Alternatywnie (zalecane)
Wklej ten kod do globalnego pliku .gitconfig
Dalsza lektura.
https://coderwall.com/p/euwpig/a-better-git-log
Advanced Reading.
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
źródło
git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1
. Możesz przekazać -p do tego pliku nietoperzy, aby uzyskać również zmienione linieSpowoduje to wydrukowanie tylko wiadomości (tylko wiersz tematu) bez skrótu :
źródło
%s
dla tematu;%b
dla ciała;%B
dla obu („raw body” w git-scm.com/docs/pretty-formats )Możesz zdefiniować globalny alias, aby móc wywoływać krótki dziennik w bardziej komfortowy sposób:
git config --global alias.slog "log --pretty=oneline --abbrev-commit"
Następnie możesz wywołać go za pomocą
git slog
(działa nawet z autouzupełnianiem, jeśli masz włączoną funkcję).źródło
Bez komunikatów zatwierdzania tylko skrót:
źródło
git log --pretty=format:"%H"
git rev-list HEAD
.jeśli chcesz zawsze używać
git log
w taki sposób, możesz dodać alias git przezgit config --global alias.log log --oneline
po tym
git log
wydrukuje to, co normalnie byłoby wydrukowane przezgit log --oneline
źródło
"log --oneline"
).