특정 날짜의 모든 커밋을 보려면 어떻게 해야 합니까?
저는 이미 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
결과적으로 스캔 가능한 출력이 생성됩니다.
이 스크립트는 현재 보고서에 사용 가능한 커밋 날짜 범위를 표시한 다음 커밋을 보려는 날짜를 묻는 메시지를 표시합니다.여기에는 짧은 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
'programing' 카테고리의 다른 글
VI가 화면에서 커밋 메시지를 기다리고 있을 때 Git 커밋을 중지하려면 어떻게 해야 합니까? (0) | 2023.07.08 |
---|---|
열이 null인지 확인하기 위한 쿼리 (0) | 2023.07.08 |
동적 프로그래밍 - 최대 사각형 블록 (0) | 2023.07.08 |
CREATE FUNCTION에서 SQL 오류 발생(1064)(42000) (0) | 2023.07.08 |
기본 딕트의 중첩 기본 딕트 (0) | 2023.07.08 |