IT이야기

날짜에 git diff

cyworld 2021. 9. 24. 21:36
반응형

날짜에 git diff?


저는 다음과 같은 로컬 git revs와 비교할 수 있는 git 비교를 실행하는 데 익숙합니다.

git diff HEAD HEAD~110 -- some/file/path/file.ext

날짜를 대신 사용할 수 있습니까? 그렇다면 어떻게? 위의 예에서 "110" 대신 "2012년 12월 4일"과 같은 날짜를 삽입할 수 있기를 바랍니다.


git diff HEAD 'HEAD@{3 weeks ago}' -- some/file/path/file.ext

이것은 엄밀히 말하면 3주 전에 이루어진 개정이 아닙니다. 대신, HEAD현재보다 3주 전의 위치 입니다. 그러나 그것은 아마도 당신의 목적에 충분히 가깝습니다 HEAD. 대부분의 경향이 그렇듯이 현재 분기가 꾸준히 앞으로 나아가 면 매우 정확할 것입니다. 대신 분기 이름을 사용하여 정확도를 높일 수 있습니다 HEAD.

현재에서 오프셋 대신 날짜/시간을 사용할 수도 있습니다(예: HEAD@{1979-02-26 18:30:00}. 를 참조하십시오 git help rev-parse.


당신이 원하는 것은 이것이어야 합니다.

git diff HEAD '@{3 weeks ago}' -- some/file/path/file.ext

@{3 weeks ago}아닌 와 비교해야 합니다 HEAD@{3 weeks ago}.

차이점은 무엇입니까?

3주 전에 다른 지점에 HEAD@{3 weeks ago}있었다면 지점의 HEAD를 @{3 weeks ago}가리키고 다른 한편 으로는 현재 지점의 HEAD를 가리킵니다.

분기 이름을 명시적으로 지정할 수도 있습니다.

git diff HEAD 'master@{3 weeks ago}' -- some/file/path/file.ext

Jonathan Stray의 제안을git-rev-list --before 결합 하여 주어진 날짜에 개정판을 찾고 Git에서 현재 분기만 표시 :

#!/bin/sh
if [ $# -eq 0 ] || [ "$1" = "--help" ]; then
  cat <<EOF
Usage: $0 DATE FILE...
git diff on FILE... since the specified DATE on the current branch.
EOF
  exit
fi

branch1=$(git rev-parse --abbrev-ref HEAD)
revision1=$(git rev-list -1 --before="$1" "$branch1")
shift

revision2=HEAD

git diff "$revision1" "$revision2" -- "$@"

날짜와 선택적으로 일부 파일 이름을 사용하여 이 스크립트를 호출합니다. 예:

git-diff-since yesterday
git-diff-since '4 Dec 2012' some/file/path/file.ext

참조URL : https://stackoverflow.com/questions/9658110/git-diff-on-date

반응형