-
Github Commit에서 특정 로그 찾기 ( 특정 커밋 찾기 )ETC 2020. 4. 27. 00:09
대규모 프로젝트는 Commit수가 어마어마하게 많다.
여기서 특정 커밋을 수동으로 찾는다는 것은 엄청난 노동이다..
[그림 1]에서 보이는 하나 하나가 다 커밋된 로그들이다.
수 년전부터 몇 주전까지의 커밋 수를 따지면 적어도 수 백개는 된다.
여기서 우리가 원하는 커밋 시점을 찾으려면,,, 그리고 또 최근 순으로 정렬돼 있는게 아니라서 더 힘들다.
그래서 이번 글에서는 특정 커밋의 로그를 검색하는 방법을 정리하려고 한다.
git log --oneline --grep "찾을 로그메시지"
위 명령어로 해당 git에 모든 로그를 찾아볼 수 있다.
먼저 git clone으로 레파지토리를 복제해온 뒤, 해당 디렉토리에서 위 명령어를 사용해서 특정커밋 해쉬를 알아내고
git reset --hard 명령어로 해당 커밋으로 맞춰주면 된다.
실제 사용은 다음과 같다.
1. 특정 커밋 로그메시지 확인
내가 확인하려는 커밋 로그메시지는 "UPSTREAM: binder: fix incorrect calculation for num_valid"이다.
해당 로그 메시지로 커밋된 시점을 내가 복제해 온 레파지토리에서 찾아주면 된다.
2. 특정 커밋 로그메시지 찾기
git log --oneline --grep num_valid 명령어로 num_valid가 포함된 커밋 메시지를 찾은 결과다.
해당 레파지토리는 https://android.googlesource.com/kernel/goldfish 여기다.
확인해보려면 위에서 찾은 해시값 "e9ff34a"를 /+/[해시값] 포맷으로 주소뒤에 붙여주면 해당 커밋으로 이동할 수 있다.
해당 커밋으로 이동해보면 우리가 찾던 "UPSTREAM: binder: fix incorrect calculation for num_valid" 커밋 시점인 것을 확인할 수 있다. 이제 해당 커밋 시점으로 돌아가면 가보자.
3. 특정 커밋으로 돌아가기
git reset --hard "해시값"
해당 레파지토리 위치에서 위 명령어를 입력해주면 해당 커밋 시점으로 돌아갈 수 있다.
여기서는 git reset --hard e9ff34a 가 된다
해당 명령어를 입력해주면 해당 커밋 메시지가 출력되면서 git clone해온 레파지토리의 파일들도 해당 커밋 시점으로 바뀌게 된다.
만약, 해당 커밋 직전으로 시점을 돌리고 싶으면 parent커밋으로 돌아가면 된다.
[그림 5]에서는 30e26cf~~c16d가 된다.
커밋 해시값은 앞 6글자만 입력해줘도 되고, 전부 다 입력해줘도 된다.
Ref. https://blog.outsider.ne.kr/849
Ref. https://chp747.tistory.com/311'ETC' 카테고리의 다른 글
Ubuntu16.04 python3.6 설치 (에러 해결) (0) 2020.04.04 PPT에 코드 깔끔하게 올리기 (Carbon) (1) 2020.03.08 Baidu 회원가입 하기 (1) 2018.10.12 댓글