git log 명령어의 경우 깃 프로젝트의 히스토리를 보기 위한 커맨드 입니다.
깃을 작업을 하다보면 push도 하고 clone, merge .. 많은 작업을 하는데
프로젝트에서 어떤 히스토리 그리고 누가 작업을 했고 누가 merge 를 했는지
알고 싶을 때 사용을 한다.
보통 IDE 를 사용하면 git log을 보통 트리형식으로 보여준다.
어떤 프로젝트가 있다 기본 명령어인 log를 사용을 했다.
옵션이 없다면 레파지토리의 커멋 히스토리가 시간순으로 보여준다.
가장 최근 커밋이 가장 먼저 나온다. 각각의 커밋은 이메일, 이름, sha-1 체크섬, 커밋 날짜, 커밋 메세지 등.. 보여준다.
원하는 히스토리를 보여준다.
git log
다양한 옵션중에 -p, --patch 는 각각의 커민 diff 결과를 보여준다. 이 옵션은 직접 diff 를 실행한것과 같은 결과를 출력하기 때문에 무엇을 커밋했는지 보여준다.
예시로 하면 -3 이라는 커멘드를 사용하면 최근 3가지 로그를 보여준다.
git log -p -3
--stat 옵션으로 각 커밋의 통계 정보를 조회할 수 있는데 어떤 파일이 수정 되었는지 얼마나 많은 파일이 변경 되었는지 얼마나 라인을 제거 했는지 알 수 있는데 요약 정보를 뒤쪽에 보여준다.
git log --stat
--pretty 옵션인데 이 옵션을 통해서 히스토리 내용을 보여줄 때 기본 형식 이외에 다른 형식으로도 볼 수 있다.
oneline 옵션은 각 커밋은 한 라인 씩 보여준다. 그리고 추가적으로 다른 옵션들도 존재한다. short, full, fuller 옵션도 있는데 정보를 축약 해주거나 늘려서 보여준다.
git log --pretty=oneline
여기서 추가적으로 format 옵션이다. 나만의 포맷으로 결과를 출력하고 싶을때 사용하다.
특히 결과를 다른 프로그램으로 파싱하고자 할때 유용하다.
git log --pretty=format:"%h - %an, %ar : %s"
| 옵션 | 설명 |
|---|---|
| %H | 커밋 해시 |
| %h | 짧은 길이 커밋 해시 |
| %T | 트리 해시 |
| %t | 짧은 길이 트리 해시 |
| %P | 부모 해시 |
| %p | 짧은 길이 부모 해시 |
| %an | 저자 이름 |
| %ae | 저자 메일 |
| %ad | 저자 시각 (형식은 –-date=옵션 참고) |
| %ar | 저자 상대적 시각 |
| %cn | 커미터 이름 |
| %ce | 커미터 메일 |
| %cd | 커미터 시각 |
| %cr | 커미터 상대적 시각 |
| %s | 요약 |
--graph 옵션은 그래프 형식으로 보여준다.
사실 위의 옵션들도 중요하다고 생각되지만 가장 중요한 것을 위의 옾션이라고 생각된다. 이 옵션을 사용해서 tree 구조로 로그를 볼 수 있어서 가장 유용하다. 위의 옵션들을 사용해서 아래와 같이 만들 수 도 있다.
git log --pretty=format:"%h %s" --graph --color
git log --oneline --graph --color --all --decorate
그리고 알리야스로 만들어서도 사용이 가능하다.
아래와 같이 알리야스를 만들어서 사용을 한다면 유용하게 사용이 가능하다.
[alias]
tree = log --oneline --graph --all --no-decorate
git tree --decorate
OS가 GUI를 지원할 때 다음을 사용하는 커멘드
gitk --all
추가적으로 다른 옵션을 사용이 가능하다.
gitk master origin/master origin/experiment
gitk --simplify-by-decoration --all