git | log

DoItDev·2021년 10월 2일
0
post-thumbnail

git log 명령어의 경우 깃 프로젝트의 히스토리를 보기 위한 커맨드 입니다.

깃을 작업을 하다보면 push도 하고 clone, merge .. 많은 작업을 하는데

프로젝트에서 어떤 히스토리 그리고 누가 작업을 했고 누가 merge 를 했는지

알고 싶을 때 사용을 한다.

보통 IDE 를 사용하면 git log을 보통 트리형식으로 보여준다.

스크린샷 2021-10-02 오후 7 49 53

어떤 프로젝트가 있다 기본 명령어인 log를 사용을 했다.

옵션이 없다면 레파지토리의 커멋 히스토리가 시간순으로 보여준다.

가장 최근 커밋이 가장 먼저 나온다. 각각의 커밋은 이메일, 이름, sha-1 체크섬, 커밋 날짜, 커밋 메세지 등.. 보여준다.

원하는 히스토리를 보여준다.

git log
135713037-3898f3c6-d860-4cd9-9d72-04afa21de61a

다양한 옵션중에 -p, --patch 는 각각의 커민 diff 결과를 보여준다. 이 옵션은 직접 diff 를 실행한것과 같은 결과를 출력하기 때문에 무엇을 커밋했는지 보여준다.

예시로 하면 -3 이라는 커멘드를 사용하면 최근 3가지 로그를 보여준다.

git log -p -3
135714311-205b8ddf-f61e-47ce-a1fe-6d05b5b11069

--stat 옵션으로 각 커밋의 통계 정보를 조회할 수 있는데 어떤 파일이 수정 되었는지 얼마나 많은 파일이 변경 되었는지 얼마나 라인을 제거 했는지 알 수 있는데 요약 정보를 뒤쪽에 보여준다.

git log --stat
135714457-f5c4164d-25ed-47f1-9725-d9ea2c2d6864

--pretty 옵션인데 이 옵션을 통해서 히스토리 내용을 보여줄 때 기본 형식 이외에 다른 형식으로도 볼 수 있다.

oneline 옵션은 각 커밋은 한 라인 씩 보여준다. 그리고 추가적으로 다른 옵션들도 존재한다. short, full, fuller 옵션도 있는데 정보를 축약 해주거나 늘려서 보여준다.

git log --pretty=oneline
스크린샷 2021-10-02 오후 8 42 01

여기서 추가적으로 format 옵션이다. 나만의 포맷으로 결과를 출력하고 싶을때 사용하다.
특히 결과를 다른 프로그램으로 파싱하고자 할때 유용하다.

git log --pretty=format:"%h - %an, %ar : %s"
스크린샷 2021-10-02 오후 8 47 41
옵션설명
%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
스크린샷 2021-10-02 오후 8 53 40
git log --oneline --graph --color --all --decorate
스크린샷 2021-10-02 오후 7 48 05

그리고 알리야스로 만들어서도 사용이 가능하다.
아래와 같이 알리야스를 만들어서 사용을 한다면 유용하게 사용이 가능하다.

[alias]
  tree = log --oneline --graph --all --no-decorate
git tree --decorate

OS가 GUI를 지원할 때 다음을 사용하는 커멘드

gitk --all
스크린샷 2021-10-02 오전 11 19 42

추가적으로 다른 옵션을 사용이 가능하다.

gitk master origin/master origin/experiment
gitk --simplify-by-decoration --all
profile
Back-End Engineer

0개의 댓글