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 .
Dziękuję za twój autorytet, który wyjaśnił mi zamieszanie - denerwowało mnie to od dawna i spędziłem dużo czasu przeglądając strony podręcznika, próbując znaleźć nieistniejący przełącznik. Czy jest już otwarty dla tego błąd?
Mr_and_Mrs_D
Nie wiem, czy ludzie z Git uważają to za błąd. Zobacz github.com/git/git, aby uzyskać linki do list mailingowych.
@ RossSolomon: to pokazuje datę autora, ale wybiera według daty autora . Aby wziąć skrajny przykład, załóżmy, że dokonuję zatwierdzenia z datą autora ustawioną na 1999 i datą osoby zatwierdzającej ustawioną na 01-01-2017. %adDyrektywa pokaże ten autorami-w-1999 popełnienia, mimo że jest drogi przed 2016!
torek
7
„Może czegoś mi brakuje” Tak, cały punkt pytania. Używa dokładnie tej samej metody filtrowania, co OP, na podstawie daty zatwierdzenia, ale po odfiltrowaniu tego, co chcą , pokazuje tylko datę autora. W jaki sposób 18 osób miało tak słabe rozumienie tekstu?
underscore_d
To polecenie nie działa z formatem daty iso-8601 w opcjach --before i --after. Format, który mi odpowiada, to „dd-mm-ccyy”.
hktegner
8
Głosowanie w dół, ponieważ ta odpowiedź nie odpowiada na pytanie, mimo że jest ogólnie użyteczna.
ravron
2
Nawet jeśli nie odpowiada na pytanie, jeśli przypadkiem natknąłem się na tę odpowiedź i znalazłem rozwiązanie mojego podobnego, ale nie-tego samego problemu, głosuję za odpowiedzią, taką prostą. Nie oznacza to jednak, że odpowiedź powinna zostać zaakceptowana i rozumiem, że ktoś ją odrzuca.
Mefitico
31
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:
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.
% x08 w ładnym formacie oznacza ascii 08, czyli backspace, więc zjada ostatnią cyfrę poprzedniej reklamy%, która jest datą autora w formacie ISO, więc używam tej odmiany (również dodany dwukropek po nazwisku autora):git log --all --date=iso --pretty=format:'%ad - %aN : %s' | grep 2020-09 | sort -u
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ładgit 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 (zgit log --format=%at
lub cokolwiek), a następnie sam wyczyść listę identyfikatorów zatwierdzeń, a następnie prześlij pozostałe identyfikatory zatwierdzeń dogit log --no-walk
. Ale to jest w najlepszym razie bolesne. Więcej informacji można znaleźć w odpowiedzi Tima Beigeleisena używającej awk .źródło
Może czegoś mi brakuje, ale czy to nie wystarczy?
Zobacz także tutaj
źródło
%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
doawk
i sprawdzenie tam daty autora:Tutaj
%ad
podaje datę autora w formacie ISO i%aN
podaje nazwisko autora.źródło
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źródło
git log --all --date=iso --pretty=format:'%ad - %aN : %s' | grep 2020-09 | sort -u