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"
답변
나는 일반적으로 내 자식 로그를 확인하고 특정 날짜에 작업 한 내용을 확인하고이를 기반으로 작업 표를 업데이트하지만 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: