Git | Git 기본 | git log


git log 명령어

git log 는 커밋 된 스냅 샷을 표시하는 명령이다. 이 명령을 사용하여 커밋 된 변경 내용 목록에 대한 필터링 특정 변경 사항 검색을 할 수 있다. git status 명령은 작업 디렉토리와 스테이징 영역의 상태를 확인하기 위한 것 인에 반면, git log 명령은 커밋 된 기록 (커밋 내역)만이 대상이다.

Git 튜토리얼 : git status와 git log

로그 출력은 단순히 커밋 히스토리를 필터링 만보기에서 완전히 사용자 정의 형식으로 표시까지 다양하게 정의 할 수 있다. git log 명령에서 잘 행해지고 있는 설정 예를 아래에 소개한다.

사용법

git log

커밋 히스토리 전체를 기본 형식으로 표시한다. 출력 표시가 2 페이지 이상에 걸치는 경우는 Space 키에서 스크롤이 가능한다. 종료하려면 q 를 입력한다.

git log -n <limit>

보기 커밋 수를 <limit> 제한한다. 예를 들어 git log -n 3 하면 표시 커밋 수는 3이다.

git log --oneline

각 커밋의 내용을 한 줄로 압축하여 표시하는 명령이다. 이 명령은 커밋 히스토리를 간단히 살펴볼 경우에 적합한다.

git log --stat

일반 git log 정보 이외에 수정 된 파일과 그 속에서의 추가 행, 삭제 행 수를 증감 단위로 표시한다.

git log -p

각 커밋에 대한 패치를 표시힌다. 이 명령을 실행하면 커밋 히스토리에서 얻을 수있는 가장 자세한 정보 인 각 커밋의 완전 차등 정보가 표시된다.

git log --author="<pattern>"

특정 저자가 작성한 커밋을 검색한다. 인수 <pattern> 에 일반 텍스트 또는 정규 표현식을 사용할 수 있다.

git log --grep="<pattern>"

커밋 메시지가 <pattern> (일반 텍스트 또는 정규 표현식)과 일치하는 커밋을 검색한다.

git log <since>..<until>

<since> 와 <until> 사이에 있는 커밋만 표시합니다. 2 개의 인수는 커밋 ID 지점 이름, HEAD 는 다른 모든 버전 레퍼런스 를 사용할 수 있다.

git log <file>

지정된 파일을 포함 커밋만 표시한다. 이 명령은 특정 파일의 기록을 조사 목적에 유용하다.

git log --graph --decorate --oneline 

여기에는 몇 가지 유용한 옵션을 제공한다. –graph 플래그를 지정하면 커밋 메시지의 왼쪽에 텍스트 기반의 커밋 히스토리를 그래프 화 한 것이 그린다. –decorate 플래그를 지정하면 표시되는 커밋의 브랜치와 태그 이름을 추가하여 표시한다. –oneline 플래그를 지정하면 커밋 정보를 압축하여 한 줄에 표시하기 위해 최선을 다하고 역사 개관에 유용하다.

보충 설명

git log 명령은 Git에서 커밋 이력을 조회하기 위한 기본 도구이다. 이 명령을 사용하면 프로젝트의 특정 버전을 찾거나 기능 가지를 병합하면 무엇이 바뀌는지 이해하거나 심지어 태만 한 개발자를 발견하는 것조차 할 수 있다.

commit 3157ee3718e180a9476bf2e5cab8e3f1e78a73b7
Author: John Smith

대부분의 정보는 직관적으로 이해할 수 있지만 첫 번째 줄에는 설명이 필요하다. commit 에 이어 40 문자로 이루어진 문자열은 커밋 내용의 SHA-1 체크섬이다. 여기에는 두 가지 목적이 있다.
첫째는 커밋의 무결성을 보장하는 커밋에 손상이 있으면 다른 체크섬이 생성된다.
둘째는 커밋에 대한 고유 ID의 역할을 한다.

이 ID는 git log <since> .. <until> 과 같이 명령에 사용할 수 있으며 특정 커밋을 지정 할 수 있다. 예를 들어 git log 3157e..5ab91 을 실행하면 3157e 와 5ab91 사이 ID를 사용하는 모든 커밋을 표시한다. 체크섬 외에 개인의 커밋을 지정하는 일반적인 방법으로 브랜치 (Git 브랜치 참조) 및 키워드 HEAD를 사용할 수 있다. HEAD 는 브랜치에도 특정 커밋에도 항상 현재의 커밋을 가리킨다.

문자 ~는 부모 커밋에 대한 상대 가르킬 할 경우에 사용한다. 예를 들어, 3157e~1 은 3157e 의 하나 전 부모 커밋을 가르키는 것이고, HEAD ~ 3 은 현재 커밋에서 3개 전의 커밋을 의미한다.

이러한 지정 방법을 채용 한 배경에는 각 커밋에 따라 작업을 수행해야한다고 생각한다. git log 명령은 작업의 대상이되는 커밋을 찾아내는 방법을 제공하는 것이며, 일반적으로 그런 작업을 할 때의 출발점이다.

사용 예

사용법 섹션에서는 git log의 사용 예를 다수 설명했지만, 하나의 명령에 여러 옵션을 조합하여 지정할 수 있음에 유의하자.

git log --author="John Smith" -p hello.py

이 명령을 실행하면 John Smith가 파일 hello.py 에 적용한 모든 변경의 모든 차이를 표시한다.

문번"…“는 브렌치 비교하는 경우에 자주 사용한다. 다음의 예는 some-feature 브랜치에 있고 master 브랜치에 없는 모든 커밋의 정보를 표시한다.

git log --oneline master..some-feature