ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Github Commit에서 특정 로그 찾기 ( 특정 커밋 찾기 )
    ETC 2020. 4. 27. 00:09

    대규모 프로젝트는 Commit수가 어마어마하게 많다.

    여기서 특정 커밋을 수동으로 찾는다는 것은 엄청난 노동이다..

     

     

    [그림 1] Google Git

     

    [그림 1]에서 보이는 하나 하나가 다 커밋된 로그들이다.

    수 년전부터 몇 주전까지의 커밋 수를 따지면 적어도 수 백개는 된다.

    여기서 우리가 원하는 커밋 시점을 찾으려면,,, 그리고 또 최근 순으로 정렬돼 있는게 아니라서 더 힘들다.

     

     


    그래서 이번 글에서는 특정 커밋의 로그를 검색하는 방법을 정리하려고 한다.

    git log --oneline --grep "찾을 로그메시지"

    위 명령어로 해당 git에 모든 로그를 찾아볼 수 있다.

     

    먼저 git clone으로 레파지토리를 복제해온 뒤, 해당 디렉토리에서 위 명령어를 사용해서 특정커밋 해쉬를 알아내고

    git reset --hard 명령어로 해당 커밋으로 맞춰주면 된다.

     

    실제 사용은 다음과 같다.

     

    1. 특정 커밋 로그메시지 확인

     

    [그림 2] 패치된 커밋 로그 확인

     

    내가 확인하려는 커밋 로그메시지는 "UPSTREAM: binder: fix incorrect calculation for num_valid"이다.

    해당 로그 메시지로 커밋된 시점을 내가 복제해 온 레파지토리에서 찾아주면 된다.

     

     

     

    2. 특정 커밋 로그메시지 찾기

     

    [그림 3] git log --oneline --grep

     

    git log --oneline --grep num_valid 명령어로 num_valid가 포함된 커밋 메시지를 찾은 결과다.

    해당 레파지토리는 https://android.googlesource.com/kernel/goldfish 여기다.

     

    확인해보려면 위에서 찾은 해시값 "e9ff34a"/+/[해시값] 포맷으로 주소뒤에 붙여주면 해당 커밋으로 이동할 수 있다.

     

     

    [그림 3] https://android.googlesource.com/kernel/goldfish/+/e9ff34a

     

    해당 커밋으로 이동해보면 우리가 찾던 "UPSTREAM: binder: fix incorrect calculation for num_valid" 커밋 시점인 것을 확인할 수 있다. 이제 해당 커밋 시점으로 돌아가면 가보자.

     

     

    3. 특정 커밋으로 돌아가기

    git reset --hard "해시값"

    해당 레파지토리 위치에서 위 명령어를 입력해주면 해당 커밋 시점으로 돌아갈 수 있다.

    여기서는 git reset --hard e9ff34a 가 된다

     

     

    [그림 4] git reset --hard e9ff34a

     

    해당 명령어를 입력해주면 해당 커밋 메시지가 출력되면서 git clone해온 레파지토리의 파일들도 해당 커밋 시점으로 바뀌게 된다.

     

     

     

    [그림 5] git parent commit

     

    만약, 해당 커밋 직전으로 시점을 돌리고 싶으면 parent커밋으로 돌아가면 된다.

    [그림 5]에서는 30e26cf~~c16d가 된다.

     

     

    [그림 6] git reset --hard 30e26cf~~

     

    커밋 해시값은 앞 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

    댓글

Designed by Tistory.