작성자 날짜에 대해 지정된 날짜 범위의 커밋을 표시하도록 git을 얻는 방법은 무엇입니까? 기준으로 커밋을 필터링 합니다

분명히 이것은 :

git log --all --after="<date> 00:00" --before="<date> 23:59" --author="<author>"

커미터 날짜를 기준으로 커밋을 필터링 합니다 . 지정된 작성자 날짜 범위에 대한 커밋을 표시하려면 어떻게해야합니까?



답변

적어도 Git에서는 할 수 없습니다. (이 질문을 방문하는 다른 사람들에게 알림 : 이것은 작성자 날짜를 보는 것이 아니라 작성자 날짜, a la / 및 / 별로 커밋을 선택 하는 것 입니다. 이러한 선택자는 작성자 날짜가 아닌 커미터 날짜를 사용합니다 . 극단적 인 예로 커밋을 고려하십시오. “지금”으로 만들었으므로 커미터 날짜가 2000 년대로되어 있지만 작성자 날짜 필드에서 1999 년의 어느 날로 거슬러 올라갑니다. 선택 범위가 “세기가 바뀔 때마다”인 경우 -커밋 날짜가 1999 년 이후 10 년 이상인 “지금”이므로이 커밋을 선택합니다.)--since--after--until--before

저는 이것이 Git의 작은 버그라고 생각합니다 : 커미터 날짜 필드를 사용하도록 요청할 수있는 모든 곳에서 작성자 날짜 필드를 사용하도록 요청할 수 있어야합니다. 로그 포맷팅 으로 쉽게 할 수 있습니다. 왜냐하면 우리는 %adand %cd등 을 가지고 있기 때문입니다 . 하지만 커밋 선택으로는 불가능 합니다. 가장 가까운 것은 git rev-list작성자-날짜별로 정렬 할 수 있다는 것입니다 (일반적인 topo 정렬 내에서).

글로벌 스위치는 git rev-list같은 --use-author-date간단한 패치로 일 것이고, 힘내에 추가 너무 어렵지 않을 것입니다,하지만 난 그것을 가지고 더 좋을 거라 생각 --min-author-age하고 --max-author-age또는 유사하고, “일종의 저자 날짜를 기준으로”플래그 (독립적 일반 --topo-order플래그이므로 플래그를 모두 설정 하면)와 동일한 효과가 --author-date-order있습니다.

해결 방법으로, 당신은 (모든 잠재적으로 흥미 커밋을 나열 할 수 있습니다 git rev-list와 같은, 또는 이에 상응 git log: 지정 날짜 필터를 제외하고, 커밋 잠재적으로 재미있는 무엇이든지 사용 : 그냥이 경우 --all)와 함께 (자신의 작성자 날짜 모든 필드를 추출 git log --format=%at또는 무엇이든), 커밋 ID 목록을 직접 잘라낸 다음 나머지 커밋 ID를 git log --no-walk. 그러나 이것은 기껏해야 고통 스럽습니다. 자세한 내용은 awk사용하는 Tim Beigeleisen의 답변을 참조하십시오 .


답변

뭔가 빠졌을 수도 있지만 이것으로 충분하지 않을까요?

git log --pretty=format:"%ad - %an: %s" --after="2016-01-31" --until="2017-03-10" --author="John Doe"

여기도 참조


답변

당신 은 할있습니다 .

그러나 @torek이 언급했듯이 순수한 Git으로는이 작업을 수행하지 못할 수도 있습니다. 한 가지 옵션은 예쁜 형식의 출력을에서 git log로 파이프 awk하고 작성자 날짜를 확인하는 것입니다.

git log --date=iso --pretty=format:'%ad%x08%aN' | awk '$0 >= "2013-01-01" && $0 <= "2013-12-01"'

여기서는 %adISO 형식으로 작성자 날짜를 %aN제공하고 작성자 이름을 제공합니다.


답변

위의 Tim Biegeleisen의 답변에서 영감을 얻었습니다.

git log --all --date=iso --pretty=format:'%ad%x08%aN %s' | grep 2020-06-09 | sort -u

내가 필요한 일을했습니다. 나는 리베이스와 스쿼시를 많이하기 때문에 날짜를 커밋하지 않고 저자의 날짜를 원합니다. 하지만 가져 오기 커밋에 중요한 날짜를 유지합니다.

이와 관련하여 저자의 이메일을 재설정 할 수있는 작은 도우미가 있지만 원래 저자의 날짜는 유지합니다. –reset-author는 기본적으로 작성자의 날짜를 덮어 씁니다.

https://github.com/mathieujobin/git-scripts/blob/master/bin/git-reset-author-but-not-date

위의 git 로그에서 필요한 경우 추가 %H하여 gitsha를 얻을 수 있습니다.


답변