조회하기
저장소의 히스토리를 보고 싶을 땐 git log
명령어를 이용하라.
연습용 프로젝트 다운로드
$ git clone https://github.com/schacon/simplegit-progit
일단 로그를 조회해 보자
$ cd simplegit-progit
$ git log
commit ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD)
Author: Scott Chacon <schacon@gmail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the verison number
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gmail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
removed unnecessary test code
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gmail.com>
Date: Sat Mar 15 10:31:28 2008 -0700
first commit
특별한 옵션 없이 git log
명령을 실행하면 저장소의 커밋 히스토리를 시간순으로 보여준다. 즉 가장 최근의 커밋이 가장 먼저 나온다. 그리고 이어서 각 커밋의 SHA-1 체크섬, 저자 이름, 저자 이메일, 커밋한 날짜, 커밋 메시지를 보여준다.
옵션 보기
주요 옵션
- -p : 각 커밋에 적용된 패치를 보여줌
- —stat : 각 커밋에서 수정된 파일의 통계정보를 보여줌
- —shortstat : —stat 명령의 결과 중에서 수정한 파일, 추가된 라인, 삭제된 라인만 보여줌
- —name-only : 커밋 정보중에서 수정된 파일의 목록만 보여줌
- —name-status : 수정된 파일의 목록을 보여줄 뿐 아니라 파일을 추가한 것인지, 수정한 것인지, 삭제한 것인지도 보여준다.
- —abbrev-commit : 40자 짜리 SHA-1 체크섬을 전부 보여주는 것이 아니라 처음 몇 자만 보여줌
- —relative-date : 정확한 시간을 보여주는 것이 아니라 '2 weeks ago' 처럼 상대적인 시간을 보여줌
- —graph : 브랜치와 머지 히스토리 정보까지 아스크 그래프로 보여줌
- —pretty : 지정한 형식으로 보여줌. 이 옵션에는 oneline, format, short, full, fuller 가 있다. (fotmat은 원하는 형식으로 출력하고자 할 때 사용)
-p, -2(조회 제한조건)
원하는 히스토리를 검색할 수 있도록 많은 옵션이 있지만 특히 -p
옵션(각 커밋의 diff
결과를 보여줌)은 굉장히 유용한 옵션이다. 그 외 -2
옵션(조회 제한조건)은 최근 2개의 결과만 보여준다. 옵션은 여러 개를 같이 사용할 수 있다.
이 옵션은 직접 diff를 실행한 것과 같은 결과를 출력하기 때문에 동료가 무엇을 커밋했는지 리뷰하고 빨리 조회하는데 유용하다.
소스보기
$ git log -p -2 commit ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD) Author: Scott Chacon <schacon@gmail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the verison number diff --git a/Rakefile b/Rakefile index a874b73..8f94139 100644 --- a/Rakefile +++ b/Rakefile @@ -5,7 +5,7 @@ require 'rake/gempackagetask' spec = Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = "simplegit" - s.version = "0.1.0" + s.version = "0.1.1" s.author = "Scott Chacon" s.email = "schacon@gmail.com" s.summary = "A simple gem for using Git in Ruby code." commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon <schacon@gmail.com> :...skipping... commit ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD) Author: Scott Chacon <schacon@gmail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the verison number diff --git a/Rakefile b/Rakefile index a874b73..8f94139 100644 --- a/Rakefile +++ b/Rakefile @@ -5,7 +5,7 @@ require 'rake/gempackagetask' spec = Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = "simplegit" - s.version = "0.1.0" + s.version = "0.1.1" s.author = "Scott Chacon" s.email = "schacon@gmail.com" s.summary = "A simple gem for using Git in Ruby code." commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon <schacon@gmail.com> Date: Sat Mar 15 16:40:33 2008 -0700 removed unnecessary test code diff --git a/lib/simplegit.rb b/lib/simplegit.rb index a0a60ae..47c6340 100644 --- a/lib/simplegit.rb +++ b/lib/simplegit.rb @@ -18,8 +18,3 @@ class SimpleGit end :...skipping...
(결과가 책에서 나온거랑 조금 다르게 나옴...아마 Git 이 업그레이드 되면서 추가되어서 그런걸로 추정)
—stat(통계)
히스토리의 통계를 보여주는 --stat
옵션
어떤 파일이 수정됐는지, 얼마나 많은 파일이 변경됐는지, 또 얼마나 많은 라인을 추가하거나 삭제했는지 보여준다. 요약 정보는 가장 아래쪽에 보여준다.
소스보기
$ git log --stat commit ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD) Author: Scott Chacon <schacon@gmail.com> Date: Mon Mar 17 21:52:11 2008 -0700 changed the verison number Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Author: Scott Chacon <schacon@gmail.com> Date: Sat Mar 15 16:40:33 2008 -0700 removed unnecessary test code lib/simplegit.rb | 5 ----- 1 file changed, 5 deletions(-) commit a11bef06a3f659402fe7563abf99ad00de2209e6 Author: Scott Chacon <schacon@gmail.com> Date: Sat Mar 15 10:31:28 2008 -0700 first commit README | 6 ++++++ Rakefile | 23 +++++++++++++++++++++++ lib/simplegit.rb | 25 +++++++++++++++++++++++++ 3 files changed, 54 insertions(+)
—pretty(출력형식 변경)
출력형식을 변경할 때 다양한 값이 있다.
oneline : 각 커밋을 한 라인으로 보여줌
$ git log --pretty=oneline ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD) changed the verison number 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test code a11bef06a3f659402fe7563abf99ad00de2209e6 first commit
format
$ git log --pretty=format:"%h - %an, %ar : %s" ca82a6d - Scott Chacon, 12 years ago : changed the verison number 085bb3b - Scott Chacon, 12 years ago : removed unnecessary test code a11bef0 - Scott Chacon, 12 years ago : first commit
fotmat 에 사용가능한 옵션들
옵션 더 보기
- %H : 커밋 해시
- %h : 짧은 길이의 커밋 해시
- %T : 트리 해시
- %t : 짧은 길이의 트리 해시
- %P : 부모 해시
- %p : 짧은 길이의 부모 해시
- %an : 저자 이름
- %ae : 저자 이메일
- %ad : 저자 시각(형식은 -date=옵션 참고)
- %ar : 저자 상대적 시각
- %cn : 커미터 이름
- %ce : 커미터 이메일
- %cd : 커미터 시각
- %cr : 커미터 상대적 시각
- %s : 요약
저자(Author) : 원래 작업을 수행한 원작자
커밋터(Committer) : 마지막으로 이 작업을 적용한(저장소에 포함시킨) 사람
만약 내가 어떤 프로젝트에 패치를 보냈고 그 프로젝트의 담당자가 패치를 적용했다면 두 명 모두의 정보를 알 필요가 있을 것이다. 그래서 이 경우 내가 저자가 되고, 그 담당자가 커미터가 되는 것이다.(분산 환경에서의 Git 공부할 때 다시 볼 것)
short
full
fuller
—graph
branch와 merge 히스토리를 보여주는 아스키 그래프를 출력
oneline 옵션 또는 format 옵션과 같이 사용하면 더 더욱 좋다.
$ git log --pretty=format:"%h %s" --graph
* ca82a6d changed the verison number
* 085bb3b removed unnecessary test code
* a11bef0 first commit
조회 제한조건
히스트로 전부가 아니라 부분만 조회 가능하도록 도와줌
주요옵션
- -(n) : 최근 n 개의 커밋만 조회
- —since, —after : (유용)명시한 날짜 이후의 커밋만 검색
- —until, —before : (유용)명시한 날짜 이전의 커밋만 검색
- —author : 입력한 저자의 커밋만 보여줌
- —committer : 입력한 커미터의 커밋만 보여줌
- —grep : 커밋 메시지 안의 텍스트를 검색
- -S : 커밋 변경(추가/삭제) 내용 안의 텍스트를 검색
간단 예제
$ git log --since=2.weeks
$ git log -Sfunction_name
- —since 옵션은 "2020-03-09" 또는 "2 weeks ago" 같은 형식을 지원
- 여러 옵션을 같이 사용해서 모두 만족하는 커밋을 찾으려면
--all-match
옵션도 같이 사용해야 함 -S
옵션으로 특정 텍스트가 포함된 커밋을 검색할 수 있음- 경로로 검색하려면
git log -- path1 path2
처럼--
와 함께 경로를 이용해 검색 가능
위 옵션들을 혼합하여 조회하는 예제
git log --pretty=format:"%h - %s" --author=gitster --since="2008-10-01" --before="2008-11-01" --no-merges -- t/
레퍼런스
'TIL > GIT' 카테고리의 다른 글
[2장]리모트 저장소 (0) | 2020.03.10 |
---|---|
[2장]되돌리기 (0) | 2020.03.10 |
[2장]Git의 기초 - 수정하고 저장소에 저장하기 (0) | 2020.03.08 |
좋은 git 커밋 메시지를 작성하기 위한 8가지 약속 (0) | 2020.03.08 |
[2장]Git 기초 - 저장소 만들기 (0) | 2020.03.07 |