Znalazłem już tę odpowiedź: liczba zatwierdzeń w gałęzi w git, ale zakłada się, że gałąź została utworzona z master.
Jak mogę policzyć liczbę zatwierdzeń wzdłuż gałęzi bez polegania na tym założeniu?
W SVN jest to banalne, ale z jakiegoś powodu naprawdę trudno jest to rozgryźć w git.
Odpowiedzi:
Aby policzyć zatwierdzenia dla oddziału, w którym się znajdujesz:
dla oddziału
Jeśli chcesz policzyć zatwierdzenia w gałęzi, które są dokonywane od czasu utworzenia gałęzi
Spowoduje to policzenie wszystkich zatwierdzeń, które kiedykolwiek zostały wykonane, a których nie ma również w nazwie oddziału.
Przykłady
Wynik: 3
Jeśli twoja gałąź pochodzi z gałęzi o nazwie
develop
:Wynik: 3
Ignorowanie połączeń
Jeśli scalisz inną gałąź w bieżącą gałąź bez szybkiego przewijania do przodu i zrobisz powyższe, scalanie jest również liczone. Dzieje się tak, ponieważ dla git scalenie jest zatwierdzeniem.
Jeśli nie chcesz liczyć tych zatwierdzeń, dodaj
--no-merges
:źródło
git log
działają lepiej niż jakiekolwiek inne sugestie.Aby zobaczyć całkowitą liczbę zatwierdzeń, możesz zrobić tak, jak sugerował Peter powyżej
A jeśli chcesz zobaczyć liczbę zatwierdzeń dokonanych przez każdą osobę, wypróbuj ten wiersz
wygeneruje takie wyjście
źródło
Może wymagać stosunkowo nowej wersji Git, ale działa to dla mnie dobrze:
Daje mi to dokładną liczbę zatwierdzeń w bieżącej gałęzi opartej na master.
Polecenie w odpowiedzi Piotra
git rev-list --count HEAD ^develop
zawiera wiele innych zatwierdzeń, 678 vs 97 w moim obecnym projekcie.Moja historia zatwierdzeń jest liniowa w tej gałęzi, więc YMMV, ale daje mi dokładnie taką odpowiedź, jakiej potrzebowałem, a mianowicie „Ile zatwierdzeń dodałem do tej pory w tej gałęzi funkcji?”.
źródło
A special notation "<commit1>..<commit2>" can be used as a short-hand for "^'<commit1>' <commit2>". For example, either of the following may be used interchangeably: $ git rev-list origin..HEAD $ git rev-list HEAD ^origin
git fetch upstream; BEHIND=$(git rev-list --count HEAD..upstream/master); git merge --ff-only upstream/master~$BEHIND;
nie ustawia się w kolejce. BEHIND jest jak 1800, kiedy w rzeczywistości nic więcej niż połączenie w górę / w górę ~ 400 powoduje zmiany. użycie--no-merges
nie jest dużo lepsze, daje jak 900. A jeśli zrobię takie scalenie z ~ 800, a liczba obrotów na liście to 1800, to zrobię scalenie z ~ 790, uzyskuję od 6 do 28 niższą liczbę obrotów -lista.Ile zatwierdzeń wykonano dla bieżącego oddziału od początku historii, nie licząc zatwierdzeń z połączonych oddziałów:
Z dokumentacji git rev-list - pomoc :
Uwaga: Płytki klon zmniejszy rozmiar historii. Np. Jeśli sklonujesz
--depth 1
, zwróci 1.liczba zatwierdzeń wykonanych od czasu innych zatwierdzeń:
lub to samo:
lub użyj dowolnego innego odniesienia git :
Policz zobowiązania wykonane od 2018 roku
01-01-2018, 01.01.2018, 2018.01.01 również działa.
git rev-label
Napisałem skrypt, aby uzyskać wersję Git w formacie podobnym do tego,
'$refname-c$count-g$short$_dirty'
który się rozwijamaster-c137-gabd32ef
.Dołączono pomoc do samego skryptu.
źródło
Co powiesz na
git log --pretty=oneline | wc -l
To powinno liczyć wszystkie zatwierdzenia z perspektywy twojego aktualnego oddziału.
źródło
Lubię robić
git shortlog -s -n --all
. Daje ci listę nazw i liczby zatwierdzeń w stylu „liderów”.źródło
Jednym ze sposobów na to jest wyświetlenie dziennika dla oddziału i policz linie.
źródło
Cóż, wybrana odpowiedź nie działa, jeśli rozwidliłeś swoją gałąź z nieokreślonej gałęzi (tj. Nie
master
lubdevelop
).Tutaj oferuję inny sposób, którego używam w moich
pre-push
haczykach do gitów.Aby uzyskać więcej analiz, odwiedź mój blog
źródło
Ponieważ OP odnosi się do liczby zatwierdzeń na gałęzi w git , chcę dodać, że podane tam odpowiedzi działają również z każdym innym oddziałem, przynajmniej od wersji git 2.17.1 (i wydaje się bardziej wiarygodne niż odpowiedź Petera van der Does):
działa poprawnie:
Ostatnie polecenie daje zero zatwierdzeń zgodnie z oczekiwaniami, ponieważ właśnie utworzyłem gałąź. Powyższe polecenie podaje mi rzeczywistą liczbę zatwierdzeń w mojej gałęzi programistycznej minus scalenie-zatwierdzenia
nie działa poprawnie:
W obu przypadkach otrzymuję liczbę wszystkich zatwierdzeń w gałęzi programistycznej i master, z której gałęzie (pośrednio) pochodzą.
źródło
Jeśli używasz systemu UNIX, możesz to zrobić
źródło
Możesz także zrobić git log | grep commit | wc -l
i odzyskaj wynik
źródło
git log
wyjściu, więc zatwierdzenie zostanie policzone dwukrotnie w wyniku. Jeszcze gorzej, jeśli komunikat zatwierdzenia miałby zawierać słowo „zatwierdzić” dwa razy w dwóch osobnych wierszach.