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/ --afteri --until/ --beforete 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 %ada %cdi tym podobne, ale niemożliwe z popełnić wybór . Najbliższe, jakie mamy, git rev-listto 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-agei --max-author-agelub podobny, a „sortowanie według daty autor” flag (niezależnie od --topo-orderflagę 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-listlub 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=%atlub 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
%adDyrektywa 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 logdo awki sprawdzenie tam daty autora:
git log --date=iso --pretty=format:'%ad%x08%aN' | awk '$0 >= "2013-01-01" && $0 <= "2013-12-01"'
Tutaj %adpodaje datę autora w formacie ISO i %aNpodaje 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ć, %Haby uzyskać gitsha
git log --all --date=iso --pretty=format:'%ad - %aN : %s' | grep 2020-09 | sort -u