programing

특정 날짜의 모든 커밋을 보려면 어떻게 해야 합니까?

newstyles 2023. 7. 8. 10:41

특정 날짜의 모든 커밋을 보려면 어떻게 해야 합니까?

저는 이미 git-scm.com 과 gitref.org 의 관련 문서를 살펴보았지만, 이것을 이해할 수 없는 것 같습니다.

2013년 11월 12일 화요일에 모든 커밋을 받고 싶다고 가정해 보겠습니다.기존의 레포를 예로 들어보면, 저는 전날과 모레의 커밋뿐만 아니라 그날 커밋이 있다는 사실을 알고 있습니다.

와 함께2013-11-11그리고.2013-11-12

다음은 모두 11월 11일과 12일에 대한 커밋입니다.

  • git log --after="2013-11-11" --until="2013-11-12"
  • git log --since="2013-11-11" --until="2013-11-12"
  • git log --after="2013-11-11" --before="2013-11-12"
  • git log --since="2013-11-11" --before="2013-11-12"

와 함께2013-11-12오직.

다음은 모두 커밋을 제공하지 않습니다.

  • git log --since="2013-11-12" --until="2013-11-12"
  • git log --since="2013-11-12" --before="2013-11-12"
  • git log --after="2013-11-12" --until="2013-11-12"
  • git log --after="2013-11-12" --before="2013-11-12"

와 함께2013-11-12그리고.2013-11-13

예상대로 (의 결과로부터)2013-11-11그리고.2013-11-12위), 다음의 모든 것이 11월 12일과 13일의 결과를 제공합니다.

  • git log --since="2013-11-12" --before="2013-11-13"
  • git log --after="2013-11-12" --before="2013-11-13"
  • git log --since="2013-11-12" --until="2013-11-13"
  • git log --after="2013-11-12" --before="2013-11-13"

...등등등등등등등등등.가능한 모든 조합을 시도해 본 것 같아요.since,after,before,그리고.until하지만 여전히 답을 찾을 수 없고, 두 날짜가 다르면 포함되는 것처럼 보이지만 같은 날이면 제외되는 것처럼 보이기 때문에 이러한 옵션이 포괄적인지 배타적인지 이해할 수 없습니다.제가 뭔가를 놓쳤나요? / 제가 뭘 잘못하고 있나요?!

존 바솔로뮤에게 감사합니다!

정답은 시간을 지정하는 것입니다. 예입니다.git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"

나는 보통 git log를 확인하고 특정일에 내가 무엇을 하고 있었는지 보고 그것을 바탕으로 타임시트를 업데이트하는데 ISO 형식으로 전체 날짜를 입력하는 것은 귀찮아서 그냥 이렇게 합니다.

git log --after=jun9 --before=jun10

그리고 덧붙이자면--author내 커밋을 인쇄하기만 하면 됩니다.

git log --since=jun9 --until=jun10 --author=Robert 

이 문서는 6월 9일에 발생한 커밋을 인쇄합니다(이 경우 2015년 또는 2014년이 아닌 2016년용).

--since/--after그리고.--until/--before매개 변수는 또한 다음과 같은 것을 취할 수 있습니다.3 days ago,yesterday,기타.

(제가 찬성한) 승인된 답변에는 문제가 없습니다만...우리는 과학을 위해 여기에 있습니다!

아래 출력은 다음을 사용하여 확장/사용자 지정할 수 있습니다.pretty=format:<string> 자리 표시자:

git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12

사용자가 동일한 문자열을 입력했을 수 있으므로 오류에 대해 100% 면역이 되지 않습니다.그러나 사용되는 자리 표시자에 따라 허용됩니다.예를 들어 위의 스니펫은 실패하지 않습니다.

그냥 전체를 분석할 수도 있습니다.git log로.JSON데이터를 마음껏 소비/보급할 수 있습니다.https://github.com/dreamyguy/gitlogg 확인하고 절대 뒤돌아보지 마세요!

면책 사항: 그것은 제 프로젝트 중 하나입니다.

저는 그 구체적인 목적을 위해 기트 별칭을 만들었습니다.

commitsAtDate = "!f() { git log --pretty='format:%C(yellow)%h %G? %ad%Cred%d %Creset%s%C(cyan) [%cn]' --decorate --after=\"$1 0:00\" --before=\"$1 23:59\" --author \"`git config user.name`\"; }; f"

용도:

git commitsAtDate 2017-08-18

결과적으로 스캔 가능한 출력이 생성됩니다.

screenshot of four commits at a specific date by the author

이 스크립트는 현재 보고서에 사용 가능한 커밋 날짜 범위를 표시한 다음 커밋을 보려는 날짜를 묻는 메시지를 표시합니다.여기에는 짧은 SHA와 전체 SHA, 작성자, 커밋 타임스탬프 및 주석이 작은 따옴표로 표시됩니다.

이 스크립트는 Enter 또는 Control-D를 누를 때까지 날짜를 묻는 메시지를 계속 표시합니다.

Mac 사용자: gnu 날짜가 필요합니다.

#!/bin/bash

COMMITS=`git log --abbrev-commit --pretty="format:%h %H %ai" | sort -k3 -k4`
FIRST=`echo "$COMMITS" | head -n 1`
LAST=`echo "$COMMITS" | tail -n 1`
echo "First commit: $FIRST"
echo "Last commit: $LAST"
printf "Date to search for commits: "
read DATE
while [[ "$DATE" ]]; do
  NEXT_DATE=`date +%Y-%m-%d -d "$DATE +1 day"`
  #echo "Searching for commits from $DATE to $NEXT_DATE"
  echo `git log --after="$DATE" --before="$NEXT_DATE" --pretty="format:%h %H %an %ci '%s'"`
  printf "\nDate to search for commits: "
  read DATE
done

는 그 을 나는대불렀다니습을본▁the라고 불렀습니다.commitsOnDates그리고 여기 그것이 작동하고 있습니다.처음 입력한 날짜에는 커밋이 없으므로 응답은 빈 행에 불과합니다.

$ commitsOnDates
First commit: 375bcfb 375bcfbbf548134a4e34c36e3f28d87c53b2445f 2015-08-03 13:37:16 -0700
Last commit: 1d4c88c 1d4c88ce6a15efaceda1d653eed3346fcae8f5e6 2018-10-13 21:32:27 -0700
Date to search for commits: 2015-08-13


Date to search for commits: 2015-08-03
375bcfb 375bcfbbf548134a4e34c36e3f28d87c53b2445f Mike Slinn 2015-08-03 13:37:16 -0700 'this is a comment'

Date to search for commits: 2018-10-13
1d4c88c 1d4c88ce6a15efaceda1d653eed3346fcae8f5e6 Mike Slinn 2018-10-13 21:32:27 -0700 'a comment' 64d6e16 64d6e16338657b82c91ac94bea8ebf7b80dc4c28 Mike Slinn 2018-10-13 18:28:41 -0700 'nother comment' d5eb26e d5eb26e49fc9dceee9b9f5a2d8fa052bff2cfbbc Mike Slinn 2018-10-13 18:16:20 -0700 'no comment' d8a4992 d8a4992df208ba5efb50728311820bdad5ba5332 Mike Slinn 2018-10-13 12:02:00 -0700 'commented'

Date to search for commits:

언급URL : https://stackoverflow.com/questions/19987099/how-do-i-view-all-commits-for-a-specific-day