[git] 특정 날짜에 대한 모든 커밋을 보려면 어떻게합니까?

git-scm.comgitref.org 에서 관련 문서를 이미 살펴 보았지만 이것을 알아낼 수는 없습니다.

2013 년 11 월 12 일 화요일에 대한 모든 커밋을 받고 싶다고 가정 해 보겠습니다. 기존 리포지토리를 예로 들어, 그날 커밋 한 사실과 그 전날과 그 다음날 커밋 한 사실을 알고 있습니다.

2013-11-112013-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-122013-11-13

(의 결과에서 예상대로 2013-11-112013-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답변을 찾을 수없는 여전히 있지만,도 나는 그들이 두 날짜가 다른 경우 포함 된 것으로 보인다 때문에 그 옵션이 포함 또는 독점인지 이해 할 수 있지만, 그들이 같은 날에 독점적입니다. 내가 뭔가를 놓쳤습니까 / 내가 뭘 잘못하고 있습니까?!



답변

감사합니다 John Bartholomew!

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


답변

나는 일반적으로 내 자식 로그를 확인하고 특정 날짜에 작업 한 내용을 확인하고이를 기반으로 작업 표를 업데이트하지만 ISO 형식으로 전체 날짜를 입력하는 것은 고통 스럽습니다.

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

--author커밋을 인쇄하기 위해 추가 합니다.

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

이것은 6 월 마지막 9 일에 발생한 커밋을 인쇄합니다 (이 경우 2016 년, 2015 년 또는 2014 년 등은 아님).

--since/--after--until/--before매개 변수도 같은 물건을 취할 수 3 days ago, yesterday


답변

받아 들인 대답에 아무런 문제가 없지만 (우리는 upvoted) 과학을 위해 여기에 있습니다!

아래 출력은 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


답변

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

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

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

#!/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

스크립트를 호출 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:


답변