Git 기초 - 3
이 글은 아래의 출처에서 내용을 참고하여 작성하였습니다.
출처 : https://git-scm.com/
커밋 기록 조회
git log
Git
에는 히스토리를 조회하는 명령어인 git log
가 있다.
git log
명령을 실행하면 아래와 같이 출력된다.
$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
removed unnecessary test
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 10:31:28 2008 -0700
first commit
특별한 대상이나 옵션 없이 git log
명령을 실행하면
저장소의 커밋 히스토리를 최근순으로 정렬하고
SHA-1 체크섬, 저자, 이메일, 날짜, 메시지 순으로 보여준다.
–patch
-p
, --patch
온션은 각 커밋의 diff
결과를 보여주고
-2
는 최근 두 개의 결과만 보여주는 옵션이다
$ git log -p -2
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version 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"
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
removed unnecessary test
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
end
-
-if $0 == __FILE__
- git = SimpleGit.new
- puts git.show
-end
이 옵션은 직접 diff
를 실행한 것과 같은 결과를 출력하기 때문에 동료가 무엇을 커밋했는지 리뷰하고 빨리 조회하는데 유용하다.
–stat
--stat
옵션은 각 커밋의 통계 정보를 조회해준다.
$ git log --stat
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
Rakefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
removed unnecessary test
lib/simplegit.rb | 5 -----
1 file changed, 5 deletions(-)
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.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(+)
이 결과에서 --stat
옵션은 어떤 파일이 수정됐는지,
변경된 파일이 몇갠지, 또 얼마나 많은 라인을 추가/삭제 했는지 보여준다.
요약정보는 가장 뒤에 나온다.
–pretty
--pretty
옵션은 선택할 수 있는 값이 있다.
oneline
각 커밋을 한 라인으로 보여준다.
$ git log --pretty=oneline
ca82a6dff817ec66f44342007202690a93763949 changed the version number
085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test
a11bef06a3f659402fe7563abf99ad00de2209e6 first commit
format
원하는 포맷으로 지정해 출력한다.
$ git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 6 years ago : changed the version number
085bb3b - Scott Chacon, 6 years ago : removed unnecessary test
a11bef0 - Scott Chacon, 6 years ago : first commit
git log --pretty=format 에 쓸 몇가지 유용한 옵션` 포맷에서 사용하는 유용한 옵션.
옵션 값 | 설명 | 옵션 값 | 설명 | 옵션 값 | 설명 |
---|---|---|---|---|---|
%H |
해시 | %an |
a저자 | %cn |
c커미터 |
%h |
짧해시 | %ae |
a이메일 | %ce |
c이메일 |
%T |
트리 | %ad |
a시각 | %cd |
c시각 |
%t |
짧트리 | %ar |
a상대 시각 | %cr |
c상대 시각 |
%P |
부모 | ||||
%p |
짧부모 | %s |
요약 |
oneline
, format
같은 옵션은
branch
와 Merge
히스토리를 시각화해주는
--graph
와 함께 쓰면 좋다.
$ git log --pretty=format:"%h %s" --graph
* 2d3acf9 ignore errors from SIGCHLD on trap
* 5e3ee11 Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 Added a method for getting the current branch.
* | 30e367c timeout code and tests
* | 5a09431 add timeout protection to grit
* | e1193f8 support for heads with slashes in them
|/
* d6016bc require time for xmlschema
* 11d191e Merge branch 'defunkt' into local
git log 주요 옵션
옵션 | 설명 |
---|---|
-p |
각 커밋에 적용된 패치 를 보여준다. |
--stat |
각 커밋에서 수정된 파일의 통계정보 를 보여준다. |
--shortstat |
--stat 명령의 결과 중에서 수정한 파일, 추가된 라인, 삭제된 라인만 보여준다. |
--name-only |
커밋 정보중에서 수정된 파일의 목록 만 보여준다. |
--name-status |
수정된 파일의 목록 을 보여줄 뿐만 아니라파일을 추가 한 것인지, 수정 한 것인지, 삭제 한 것인지도 보여준다. |
--abbrev-commit |
40자 짜리 SHA-1 체크섬 전부가 아니라 처음 몇 자 만 보여준다. |
--relative-date |
정확한 시간 이 아니라 “2 weeks ago” 처럼 상대적인 형식 으로 보여준다. |
--graph |
브랜치와 머지 히스토리 정보까지 아스키 그래프 로 출력 |
--pretty |
지정한 형식으로 보여준다. 이 옵션에는 oneline , short full , fuller format 이 있다. format 은 원하는 형식으로 출력하고자 할 때 사용한다. |
--oneline |
--pretty=oneline --abbrev-commit 와 같다. |
조회범위제한 옵션
옵션 | 설명 |
---|---|
-(숫자n) |
최근 n 개 의 커밋만 조회한다. |
--since --after |
명시한 날짜 이후 의 커밋만 검색한다. |
--until --before |
명시한 날짜 이전 의 커밋만 조회한다. |
--author |
입력한 저자의 커밋만 보여준다. |
--committer |
입력한 커미터의 커밋만 보여준다. |
--grep |
커밋 메시지 안의 텍스트를 검색 한다. |
-S |
커밋 변경(추가/삭제) 내용 안의 텍스트를 검색 한다. |
--all-match |
다수 조건 옵션 을 모두 일치 하는지 확인. |
--no-merges |
Merge 커밋 제외 . |
다수의 옵션 사용시 ||
가 아닌 &&
를 원한다면
--all-match
옵션도 반드시 함께 사용해야 한다.
-S
옵션은 코드에서 추가/제거된 내용 중
특정 값의 포함여부
를 검색한다.
특정 함수가 추가/제거된 커밋만을 찾아서 조회하기 좋다.
$ git log -S function_name
--
옵션은 명령어 맨 끝에 쓰며, 파일 경로로 검색
해준다.
git log -- path1 path2
디렉토리나 파일 이름으로 그 파일이 변경된 log
의
결과를 검색할 수 있다.
사용예시
$ git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \
--before="2008-11-01" --no-merges -- t/
5610e3b - Fix testcase failure when extended attributes are in use
acd3b9e - Enhance hold_lock_file_for_{update,append}() API
f563754 - demonstrate breakage of detached checkout with symbolic link HEAD
d1a43f2 - reset --hard/read-tree --reset -u: remove unmerged new paths
51a94af - Fix "checkout --track -b newbranch" on detached HEAD
b0ad11e - pull: allow "git pull origin $something:$current_branch" into an unborn branch
댓글남기기