Pobierz wszystkie zatwierdzenia git od ostatniego tagu


127

Kiedy zamierzam oznaczyć zatwierdzenie tagiem, muszę wiedzieć, co zmieniło się od ostatniego oznaczonego zatwierdzenia. Na przykład:

a87a6sdf87a6d4 Some new feature
a87a6sdf87a6d3 Some bug fix
a87a6sdf87a6d2 Some comments added
a87a6sdf87a6d1 Some merge <- v1.4.0

W tym przykładzie chciałbym wiedzieć o 3 najnowszych zatwierdzeniach lub móc wydrukować dziennik podobny do powyższego, który pokazuje oba zatwierdzone tagi, jeśli takie istnieją. A kiedy zobaczę, że została dodana nowa funkcja, oznaczyłbym ją jako wersję 1.5.0.

Jak sobie z tym radzisz? Czy w ten sposób mam używać tagów? Co mam napisać w wiadomości z tagiem? Zawsze zostawiam to puste:git tag -a v1.2.3 -m ''

Odpowiedzi:


226

git log <yourlasttag>..HEAD ?

Jeśli chcesz, żeby były jak w twoim przykładzie, w jednej linii z komunikatem commita id +, to

git log <yourlasttag>..HEAD --oneline

a jeśli nie znasz swojego najnowszego znacznika lub chcesz, aby był on dynamiczny, w systemie Windows możesz to zrobić

for /f "delims=" %a in ('git describe --tags --abbrev^=0') do @set latesttag=%a
git log %latesttag%..HEAD --oneline

i na linux / git bash / windows bash

git log $(git describe --tags --abbrev=0)..HEAD --oneline

Ponadto, jeśli masz przypadek, w którym znasz tag w historii i chcesz wydrukować wszystko, od tego tagu do bieżącej sytuacji, możesz chcieć dodać również, --decorateaby wydrukować wszystkie tagi pomiędzy.


Czy jest jakiś sposób na pominięcie zatwierdzeń scalających?
— Holloway

@Trengot nie wiem, nie zaglądałem do tego. Zresztą zatwierdzenia scalania IMO są czymś, czego należy unikać, zamiast tego używam ponownego bazowania, gdy tylko jest to możliwe.
— eis

Wersja
— linuxowa

Czy nie powinien to być <yourlasttag>+1?
— Raffi Khatchadourian

@RaffiKhatchadourian, jeśli to zrobisz, przegapisz zmiany wprowadzone w zatwierdzeniu <yourlasttag>+ 1, a zmiany otrzymasz dopiero po tym
— eis

40

Jeśli twoje obecne zatwierdzenie jest również znacznikiem i chcesz dynamicznie pobierać zmiany od poprzedniego znacznika, nie znając najnowszego znacznika ani nazwy poprzedniego znacznika, możesz:

git log --oneline $(git describe --tags --abbrev=0 @^)..@

Zauważ, że @jest to skrót od HEAD.


fajnie !, jeśli tylko chcesz zmienić tekst zatwierdzeń --oneline na --pretty = format: "% s": git log --pretty = format: "% s" $ (git opisać --tags --abbrev = 0 @ ^) .. @
— JBarbosa
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.