Git: git log <revision-range> 로 커밋 로그 필터링해서 조회하기

발생일: 2015.12.04

키워드: git, 깃, revision, 깃 리비전, revision range, 깃 로그, git log

문제:
특정 브랜치를 제외하고 현재 브랜치에서 작업한 커밋 로그만 보고 싶다.


해결책:

`git log <revision-range>` 명령에 리비전을 전달할 수 있고, 리비전 범위로 필터링할 수 있다.


특정 리비전: (<revision>)

HEAD^ : 현재 커밋의 부모
HEAD^2 = 현재 커밋의 조부모
HEAD^^ = 위와 동일
HEAD^5 : 현재 부모의 다섯번째 부모


범위: (<revision-range>)

refA..refB : refA 엔 없고 refB 에만 있는 커밋
^refA refB : 위와 동일
^refA refB refC : refA 엔 없고, refB / refC 에만 있는 커밋
--not refA refB refC : 위와 동일

refA...refB : refA 와 refB 모두에 존재하지 않는 커밋


예1) develop 것을 제외하고 현재 브랜치에만 있는 커밋 로그 보기

내가 develop 에서 featureA 브랜치를 따서 작업하던 중에, develop 으로부터 시작한 내 브랜치의 작업 로그를 보고 싶은 경우.

  $ git log develop..HEAD

또는

  $ git log ^develop HEAD
  $ git log --not develop HEAD

로 조회할 수 있다.

반대로, 내가 작업하던 중에 develop 에 머지된 다른 커밋을 보고 싶은 경우,

  $ git log HEAD..develop

또는

  $ git log ^HEAD develop

로 조회할 수 있다.

시간이 지나면 .. 와 ... 이 또 헷갈릴테니, ^ 를 사용하는 게 더 직관적일 것 같다.


예2) develop 과 현재 브랜치에 포함되지 않은 커밋 로그 보기 

현재 브랜치에서 develop 을 머지하려고 하는데, 양 쪽에 머지된 게 아닌 다른 커밋을 보고 싶은 경우.

예를 들어, 

develop - featureA
develop - featureB
develop - featureC

와 같은 브랜치가 있고, 내가 featureB 를 작업하고 있던 중에, featureA 를 미리 머지했었다면,

  $ git log develop...HEAD

명령으로 featureC 의 커밋을 확인할 수 있다.



참고:

카테고리

분류 전체보기 (711)
About me. (6)
Daylogs (676)
영어공부 (0)
My works - 추억 (29)
비공개 (0)