Najwyraźniej to :
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
filtry zatwierdza na podstawie daty zatwierdzającego . Jak mogę sprawić, by pokazywały zatwierdzenia dla określonego zakresu dat autora?
Najwyraźniej to :
git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"
filtry zatwierdza na podstawie daty zatwierdzającego . Jak mogę sprawić, by pokazywały zatwierdzenia dla określonego zakresu dat autora?
Odpowiedzi:
Nie możesz - przynajmniej nie w samym Gicie. (Przypomnienie dla innych odwiedzających to pytanie: nie chodzi o oglądanie datę autor, to o wyborze zobowiązuje według daty autora, a la --since
/ --after
i --until
/ --before
te selektory wykorzystać w. Committer datę, a nie data autor Rozważmy jako przykład skrajnego commit. utworzono „teraz”, tak że jego data zatwierdzająca przypada na 2000 r., ale jest datowana wstecz w polu data autora na jakiś dzień w 1999 r. Jeśli zakres wyboru to „kiedykolwiek blisko przełomu wieków”, -wybierz to zatwierdzenie, ponieważ data jego autora to „teraz”, ponad dekadę po 1999 r.)
Uważam to za mały błąd w Git: powinieneś móc poprosić, aby używał pola daty autora wszędzie tam, gdzie możesz zażądać, aby używał pola daty autora. To jest łatwe formatowanie dziennika , ponieważ mamy %ad
a %cd
i tym podobne, ale niemożliwe z popełnić wybór . Najbliższe, jakie mamy, git rev-list
to sortowanie według daty autora (w ramach ogólnego sortowania według topografii).
Globalny przełącznik w git rev-list
, jak --use-author-date
, będzie działać jako zwykły plaster, a nie byłoby zbyt trudne, aby dodać do Git, ale myślę, że byłoby lepiej mieć --min-author-age
i --max-author-age
lub podobny, a „sortowanie według daty autor” flag (niezależnie od --topo-order
flagę ogólną , tak aby ustawienie obu flag miało taki sam efekt jak --author-date-order
).
Aby obejść ten problem, możesz wymienić wszystkie potencjalnie interesujące zatwierdzenia (z git rev-list
lub równoważnymi, na przykład git log
: użyj dowolnego specyfikatora, który sprawia, że zatwierdzenia są potencjalnie interesujące, z wyjątkiem filtrów dat: w tym przypadku to tylko --all
) i wyodrębnij wszystkie ich pola daty autora (z git log --format=%at
lub cokolwiek), a następnie sam wyczyść listę identyfikatorów zatwierdzeń, a następnie prześlij pozostałe identyfikatory zatwierdzeń do git log --no-walk
. Ale to jest w najlepszym razie bolesne. Więcej informacji można znaleźć w odpowiedzi Tima Beigeleisena używającej awk .
Może czegoś mi brakuje, ale czy to nie wystarczy?
git log --pretty=format:"%ad - %an: %s" --after="2016-01-31" --until="2017-03-10" --author="John Doe"
Zobacz także tutaj
%ad
Dyrektywa pokaże ten autorami-w-1999 popełnienia, mimo że jest drogi przed 2016!
Ty może .
Ale jak wspomniał @torek, możesz nie być w stanie tego zrobić z czystym Gitem. Jedną z opcji byłoby przesłanie jakiegoś ładnego formatu wyjściowego z git log
do awk
i sprawdzenie tam daty autora:
git log --date=iso --pretty=format:'%ad%x08%aN' | awk '$0 >= "2013-01-01" && $0 <= "2013-12-01"'
Tutaj %ad
podaje datę autora w formacie ISO i %aN
podaje nazwisko autora.
zainspirowany powyższą odpowiedzią Tima Biegeleisena.
git log --all --date=iso --pretty=format:'%ad%x08%aN %s' | grep 2020-06-09 | sort -u
zrobił to, czego potrzebowałem. Chcę mieć datę autora, a nie datę zatwierdzenia, ponieważ dużo zbieram i zgniatam. ale zachowuję ważne daty w zatwierdzeniach importu.
w związku z tym mam małego pomocnika, który pozwala mi zresetować adres e-mail autora, ale z zachowaniem oryginalnej daty autora. --reset-author domyślnie zastępuje datę autora.
https://github.com/mathieujobin/git-scripts/blob/master/bin/git-reset-author-but-not-date
w powyższym dzienniku git, w razie potrzeby, możesz dodać, %H
aby uzyskać gitsha
git log --all --date=iso --pretty=format:'%ad - %aN : %s' | grep 2020-09 | sort -u