Jak wyświetlić listę wszystkich tagów zawierających zatwierdzenie?

227

To pytanie jest podobne do Jak wyświetlić wszystkie znaczniki wskazujące na konkretny zatwierdzenie w git , ale z jedną różnicą: Chcę wyszukać wszystkie znaczniki, które zawierają określone zatwierdzenie w drzewie każdego znacznika, a nie pliki zaznaczone w znaczniku sam (w tym przypadku tylko zmiana Makefile została oznaczona).

atx
źródło
1
Nie możesz otagować konkretnego pliku - tagi wskazują tylko na zatwierdzenia. Możesz edytować swoje pytanie, podając więcej szczegółów na temat problemu, który naprawdę próbujesz rozwiązać.
Mark Longair
Uwaga: w systemie Windows, upewnij się, aby użyć git 2.0.x (2014), jeśli chcesz git tag --contains, aby nie upaść. Zobacz moją odpowiedź poniżej
VonC

Odpowiedzi:

348
git tag --contains <commit>
amalloy
źródło
2
Próbowałem tego. Ale jeśli tag zawiera tylko jeden plik, uważam, że przeszukuje tylko ten plik. Nie przeszuka drzewa. Ponadto repozytorium, na którym próbowałem, jest tak duże, że został zwolniony za kaucją i dostał SIGKILL'ed.
atx
21
Tagi nie zawierają plików. Są tylko znacznikami zatwierdzenia. Biorąc to pod uwagę, nie sądzę, aby twój sprzeciw miał sens.
amalloy
Nie może to pokazywać mi zatwierdzenia z powodu braku pamięci w tym przypadku. Czy wiesz, jak mogę przez to przejść?
atx
5
Czy można to zrobić w przypadku zdalnych tagów? Podobnie jak w przypadku gałęzi:git branch -r --contains <commit>
Mike
23

Pamiętaj, że potrzebujesz git 2.0.x (III kwartał 2014), aby wyświetlić listę wszystkich tagów dla określonego zatwierdzenia, jeśli masz duże repo

Zobacz zatwierdzenie cbc60b6 przez Jean-Jacquesa Lafaya ( lanfeust69) :

git tag --contains: unikaj przepełnienia stosu

W dużych repozytoriach implementacja rekurencji contains(commit, commit_list)może spowodować przepełnienie stosu. Zastąp rekurencję pętlą, aby ją naprawić.

Ten problem jest bardziej widoczny w systemie Windows niż w systemie Linux, gdzie stos jest domyślnie bardziej ograniczony.

Zobacz także ten wątek na liście msysGit .

VonC
źródło
9
Nie masz zamiaru grać? ;-)
MikeSchinkel,
3
@MikeSchinkel Cóż ... przynajmniej nie zamierzony .
VonC
16
git tag --contains <sha1_hash> 

powinno działać

manojlds
źródło