파일을 수정한 가장 최근의 git commit을 어떻게 찾습니까?
소스 파일을 수정한 가장 최근의 커밋을 찾고 싶습니다.
사용할 수 있습니다git blame
각 행별로 커밋 날짜를 모두 표시하지만 파일을 마지막으로 터치한 커밋 날짜를 정확히 확인하기는 어렵습니다.
git 저장소에서 지정된 파일을 마지막으로 터치한 커밋을 어떻게 찾을 수 있습니까?
git log
에서는 특정 파일(및 디렉터리)의 기록을 볼 수 있으므로 다음과 같이 부를 수 있습니다.
git log my/file.c
스크립트에서 사용하는 등 가장 최근의 커밋을 하나만 나열하려면-n 1
옵션:
git log -n 1 --pretty=format:%H -- my/file.c
--pretty=format:%h
말한다git log
커밋 해시만 표시합니다.그--
구분 기호는 파일 이름이 모호할 경우를 대비하여 파일 이름이 커밋 이름으로 해석되는 것을 방지합니다.
가장 최근의 커밋을 찾고자 하는 경우에는 다음을 수행할 필요가 없습니다.git-log
,너는 원한다git-rev-list
여기에는 해당 커밋 경로에서 해당 파일을 변경하는 커밋 개체가 가장 최근의 파일(시간순으로)부터 나열됩니다.간단히 말해,
git rev-list -1 <commit> <filename>
위해서git-rev-list
당신의 경우, 당신은 단지 다음을 제공합니다.
- 포함할 커밋 수 또는 가장 최근의 경우에만 -1,
- 되돌아보기 시작할 분기(또는 커밋 ID), 이미 사용 중인 경우 HEAD 또는 --모든 알려진 커밋을 원하는 경우 모두.
- 파일의 상대 경로입니다.
현재 분기에서 해당 파일을 변경할 최근 커밋 ID(예:215095e2e338525be0baeeebdf66bfbb304e7270
더 복잡한 예에서는 태그 이름과 원격 참조를 사용하고 와일드카드로 상대 경로 이름을 포함할 수 있습니다. 예를 들어 다음과 같습니다.
git rev-list origin/user/bob/testbranch -1 src/bfiles/*.txt
...이 지점의 기록에서 와일드카드 일치가 가장 최근에 변경된 내용을 알 수 있습니다.rev-list 옵션은 매우 광범위하며, 가장 중요한 배관 명령 중 하나이므로 상상할 수 있는 거의 모든 기준으로 포함하거나 제외할 수 있습니다.
물론 git-rev-list (1) Manual 페이지를 참조하십시오.
특정 파일 집합을 수정하기 위해 최신 커밋의 해시만 가져오려면(그리고 방지하려면)awk
) 사용할 수 있는 항목:
git log -n 1 --pretty=format:%h -- <path>
이것은 나중에 사용할 커밋 해시를 가져오는 데 유용할 수 있습니다.git describe
.
예를 들어 (누구에게나 유용한 경우)…
소스 파일을 변경하기 위한 최신 커밋을 고려하여 현재 버전 ID를 만듭니다(다음과 같은 태그로 버전을 표시한다고 가정).mycode-1.2.1
):
COMMIT=$(git log -n 1 --pretty=format:%h -- *.c *.h)
if VN=$(git describe --always --abbrev=5 --match "mycode-*" $COMMIT 2>/dev/null) &&
case "$VN" in
mycode-*)
git update-index -q --refresh
test -z "$(git diff-index --name-only HEAD *.c *.h)" ||
VN="$VN-mod" ;;
*) VN="mycode-unknown-g$VN" ;;
esac
then
continue
else
VN="mycode-unknown"
fi
이를 통해 다음과 같은 ID가 생성됩니다.
mycode-1.2.1
원본 파일의 현재 상태가 태그가 지정된 버전에 해당하는 경우mycode-1.2.1-g3k7s2
소스 파일의 현재 상태가 태그가 지정된 버전 다음에 커밋하는 경우mycode-1.2.1-g3k7s2-mod
태그가 지정된 버전 다음에 마지막으로 커밋한 이후 원본 파일의 현재 상태가 수정된 경우mycode-unknown
버전 태그가 아직 생성되지 않은 경우
이게 당신이 원하는 것인지는 모르겠지만 만약 당신이 한다면.git log <thefile>
파일을 변경한 커밋을 가져올 수 있습니다.가장 위에 있는 것을 고르시면 됩니다.그것은 당신이 찾고 있는 것이어야 합니다.
이 일단사용커밋를의할있가 SHAID면을 사용하여 보고 싶은 ,git log FILENAME
당신은 할 수 있어야 합니다.git show SHA_ID_HERE
당신이 그 특정한 약속을 위해 무엇을 했는지 보기 위해.전체 ID를 입력할 필요도 없습니다. 처음 6자만 입력해도 충분합니다.
한 줄에 있는 참조만 가져오려면 다음을 시도하십시오.
git log -n1 --oneline <path> | awk '{print $1;}'
언급URL : https://stackoverflow.com/questions/4784575/how-do-i-find-the-most-recent-git-commit-that-modified-a-file
'source' 카테고리의 다른 글
안드로이드 스튜디오에서 그라들을 업데이트하는 방법은 무엇입니까? (0) | 2023.07.01 |
---|---|
angular2 및 typescript에서 배열을 초기화하는 방법 (0) | 2023.06.26 |
오라클 데이터베이스에 데이터 스토리지를 위한 테이블스페이스가 두 개 이상 있어야 합니까? (0) | 2023.06.26 |
데이터 프레임의 그룹 내 행 번호 매기기 (0) | 2023.06.26 |
일반 유형 '관찰 가능'에는 1개의 유형 인수가 필요합니다. (0) | 2023.06.26 |