나는 약간의 실험을 해왔고 이것은 앞으로 탐색하는 트릭을하는 것 같습니다 ( 편집 : 병합 커밋이없는 선형 기록이있을 때만 잘 작동합니다) :
git checkout $(git rev-list --topo-order HEAD..towards | tail -1)
towards커밋 또는 태그의 SHA1은 어디에 있습니까 ?
설명:
- 내부 명령
$()은 다음을 의미합니다. 현재 HEAD와 커밋 사이의 모든 커밋을 가져 오고 towards(제외 HEAD) 우선 순위로 정렬 한 다음 ( git log기본적으로 이상하게 기본값 인 시간순 대신 rev-list), 마지막 커밋 을 취합니다. ( tail), 즉 우리가 가고자하는 것.
- 이것은 서브 쉘에서 평가되고
git checkout체크 아웃을 수행하기 위해 전달됩니다 .
.profile특정 커밋으로 이동 하기 위해 파일 에서 매개 변수 예상 별칭으로 액세스 가능한 함수를 정의 할 수 있습니다 .
# Go forward in Git commit hierarchy, towards particular commit
# Usage:
# gofwd v1.2.7
# Does nothing when the parameter is not specified.
gofwd() {
git checkout $(git rev-list --topo-order HEAD.."$*" | tail -1)
}
# Go back in Git commit hierarchy
# Usage:
# goback
alias goback='git checkout HEAD~'