Git 커밋 기록 보기
Git에서 커밋 기록을 보고자 하는 경우 git log 명령을 사용합니다.
git log 명령을 테스트하기 위해 자바스크립트 jQuery Git 저장소를 clone합니다. 개인이 작업하고 있는 Git 저장소가 있다면 그것을 사용해도 됩니다. 저장소를 myQuery 라는 이름으로 바꿔 clone했습니다.
$ git clone https://github.com/jquery/jquery myQuery
clone한 myQuery 저장소로 이동합니다.
$ cd myQuery/
git log 기본 사용법
git log 명령어로 커밋 기록을 조회합니다. 다음과 같이 지금까지의 커밋 기록들이 쭉 출력되며, 가장 위에 나오는 내역이 가장 최근 내역임을 알 수 있습니다. 기록에는 SHA-1 체크섬, 저자 이름, 저자 이메일, 커밋 날짜와 시간, 커밋 메시지가 포함되어 있습니다.
$ git log
commit 821bf34353a6baf97f7944379a6459afb16badae (HEAD -> master, origin/master, origin/HEAD)
Author: Richard Gibson <richard.gibson@gmail.com>
Date: Mon May 7 09:28:18 2018 -0400
CSS: Correctly detect scrollbox support with non-default zoom
Fixes gh-4029
Closes gh-4030
commit f8c1e9020c8fd0f0bb83019bfb12e9a7099599b2
Author: Michał Gołębiowski-Owczarek <m.goleb@gmail.com>
Date: Wed May 2 17:08:20 2018 +0200
CSS: Ensure camel- vs kebab-cased names are not collapsed for CSS vars
Closes gh-4062
commit f5e36bd8f2c2b28231bbed926c6c3dead94db545
Author: Michał Gołębiowski-Owczarek <m.goleb@gmail.com>
Date: Mon Apr 30 18:52:39 2018 +0200
...생략...
git log 명령어 옵션
git log 명령어의 -p 옵션과 -[숫자] 옵션이 있는데 숫자 옵션은 -2 와 같이 사용하며, 최근 몇개의 내역을 보여줄 것인지를 지정하는 것이고 -p 옵션은 각 커밋의 diff 결과를 보여줍니다.
최근 두 개의 커밋을 diff 결과까지 보기 위해서 다음과 같이 사용합니다.
$ git log -p -2
commit 821bf34353a6baf97f7944379a6459afb16badae (HEAD -> master, origin/master, origin/HEAD)
Author: Richard Gibson <richard.gibson@gmail.com>
Date: Mon May 7 09:28:18 2018 -0400
CSS: Correctly detect scrollbox support with non-default zoom
Fixes gh-4029
Closes gh-4030
diff --git a/src/css.js b/src/css.js
index ea730201..e936c8f3 100644
--- a/src/css.js
+++ b/src/css.js
@@ -352,13 +352,15 @@ jQuery.each( [ "height", "width" ], function( i, dimension ) {
Git Bash에서 내용이 길면 출력 내용이 잘릴 수 있는데 콘솔 하단에 :(콜론)이 표시된 상태에서 키보드 Space Bar 버튼을 누르면 모두 출력됩니다. 이상태에서 나가고 싶은경우 키보드 Q를 누르면 됩니다.
간단한 통계 보기
--stat 옵션을 사용하면 각 커밋의 통계를 볼 수 있습니다. 각 통계는 얼마나 많은 파일이 몇 줄이나 수정되거나 추가 삭제되었는지를 보여주며 마지막에 요약 정보를 보여줍니다.
$ git log --stat
commit 821bf34353a6baf97f7944379a6459afb16badae (HEAD -> master, origin/master, origin/HEAD)
Author: Richard Gibson <richard.gibson@gmail.com>
Date: Mon May 7 09:28:18 2018 -0400
CSS: Correctly detect scrollbox support with non-default zoom
Fixes gh-4029
Closes gh-4030
src/css.js | 16 +++++++++-------
src/css/support.js | 4 +++-
test/data/css/cssWidthBrowserZoom.html | 6 +++++-
test/unit/css.js | 7 ++++---
4 files changed, 21 insertions(+), 12 deletions(-)
--pretty 옵션으로 여러가지 형식으로 기록 보기
--pretty 옵션과 부가 옵션을 추가로 사용하면 기본 형식 이외의 다양한 형식으로 기록을 볼 수 있습니다. online 옵션은 하나의 커밋을 커밋 체크섬과 커밋 메시지만을 가지고 한 줄로만 표현해 주며 short, full, fuller 옵션은 각각 단계에 따라 정보들을 추가적으로 자세히 보여줍니다.
$ git log --pretty=oneline
821bf34353a6baf97f7944379a6459afb16badae (HEAD -> master, origin/master, origin/HEAD) CSS: Correctly detect scrollbox support with non-default zoom
f8c1e9020c8fd0f0bb83019bfb12e9a7099599b2 CSS: Ensure camel- vs kebab-cased names are not collapsed for CSS vars
f5e36bd8f2c2b28231bbed926c6c3dead94db545 CSS: Skip the px-appending logic for animations of non-element props
format 옵션으로 나만의 형식으로 기록 보기
format 옵션과 추가 표현 옵션을 사용하여 내가 원하는 형식으로 바꾸어 볼 수 있습니다.
$ git log --pretty=format:"%H - %an, %ar : % %s"
821bf34353a6baf97f7944379a6459afb16badae - Richard Gibson, 5 days ago : CSS: Correctly detect scrollbox support with non-default zoom
f8c1e9020c8fd0f0bb83019bfb12e9a7099599b2 - Michał Gołębiowski-Owczarek, 10 days ago : CSS: Ensure camel- vs kebab-cased names are not collapsed for CSS var
format 형식에 사용할 수 있는 옵션
옵션 |
설명 |
%H |
커밋 해시 |
%h |
단축 커밋 해시 |
%T |
트리 해시 |
%t |
단축 트리 해시 |
%P |
부모 해시 |
%p |
단축 부모 해시 |
%an |
저자 이름 |
%ae |
저자 메일 |
%ad |
저자 시간(-date 옵션) |
%ar |
저자 상대 시간(ex: 5 days ago) |
%cn |
committer 이름(커밋한 사람) |
%ce |
committer 메일(커밋한 사람) |
%cd |
committer 시간 |
%cr |
committer 상대 시간(ex: 5 days ago) |
%s |
요약 |
포맷 옵션에서 저자와 커밋터의 차이는 저자의 경우는 실제 작업을 수행한 사람이코 커밋터는 실제 저장소에 커밋한 사람입니다.
--graph 옵션을 통한 커밋 기록을 그래프 형식으로 편하게 보기
사람은 복잡한 텍스트들 보다는 그림이나 도형을 통해 한눈에 보는것을 쉽게 인식할 수 있습니다. 커맨드 환경에서는 그림을 표현하기 힘들지만 --graph 옵션은 몇가지 ASCII 문자를 이용하여 커밋 내역을 그래프로 표현하여 보여줍니다.
$ git log --pretty=format:"%h %s" --graph
* 20be650b Merge branch 'x8908'
|\
| * 5904468b Fix #8908. Don't let change to originals affect clones in IE9/10. Close gh-886.
| |\
| | * 71b29924 Remove test file that I didn't mean to get into the previous commit
| | * f2963353 Add support check, added assertion to check if cleared, addedge case for background Position
| | * f952b979 Updated the comment above the fix
| | * d5d86223 Fix weird clone bug and add a unit test to verify
| | * 0d07e7fc Manual merge after fetch upstream
| | |\
| | * | 039222f8 Fix IE10 bug when cloning an object element without a parentNode
* | | | d08d4833 update Sizzle
* | | | 28df086b Updating the version to 1.9.0pre.
|/ / /
* | | 05fb5de3 Revert "Fixes #12569. Improve Feature Detect For oldIE bubbling.
...생략...
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은
사용자가 원하는 형식으로 출력하고자 할 때 사용하며 형식 옵션이 추가로 필요하다. |
git log 조건 범위로 기록 조회하기
git log의 몇 가지 옵션을 통해 조건을 주어 일부분의 커밋 기록만을 조회할 수 있습니다. 나중에 커밋이 몇 만개가 된다면 모든 기록을 출력하여 보면 원하는 정보를 뽑아내기 힘들므로 원하는 정보를 보다 빠르게 캐치하기 위해서는 조건 범위 검색 옵션이 유용할 것입니다.
이미 위에서 살펴 보았는데 -[숫자] 옵션은 -3 과 같이 몇 개의 커밋 기록을 조회하고 싶은지를 표현할 수 있으며, --since 와 --until 같이 시간을 기준으로 하는 옵션을 이용하여 특정 날짜를 지정할 수도 있습니다.
예를 들어 2018-01-01 과 같이 지정하거나, 1 years 15 day 3 minutes ago 같은 상대적인 시간으로도 지정 가능합니다.
$ git log --sinse=2.weeks #지난 2주 동안의 커밋 기록
또한 --author 옵션으로 저자를 지정하거나 --committer 옵션으로 커밋터를 지정할 수 있고 --grep 옵션으로 커밋 메시지를 조건으로 검색할 수 있습니다. 모두 만족하는 커밋을 찾으려면 --all-match 옵션을 사용합니다.
유용한 옵션으로는 -S가 있는데 이 옵션은 추가, 삭제된 내용중 특정 텍스트가 포함되어 있는지를 검색합니다. 예를 들어 계산 함수를 어떤 커밋에서 반영했는지 검색하는 경우 git log -S'calc(int a)' 와 같이 검색할 수 있습니다.
마지막으로 파일의 경로를 통해 검색하는 경우 git log -- 경로1 경로2 와 같이 -- 와 이어서 사용하며, 명령어 끝부분에 사용합니다.
옵션 |
설명 |
-숫자 |
최근 n 개의 커밋만 조회한다. |
--since, --after |
명시한 날짜 이후의 커밋만 검색한다. |
--until, --before |
명시한 날짜 이전의 커밋만 조회한다. |
--author |
입력한 저자의 커밋만 보여준다. |
--committer |
입력한 커미터의 커밋만 보여준다. |
--grep |
커밋 메시지 안의 텍스트를 검색한다. |
-S |
커밋 변경(추가/삭제) 내용 안의 텍스트를 검색한다. |
2018년 1월에 dololak이 머지 커밋을 제외한 커밋을 조회하는 log 명령어. 역슬래시(\)는 명령어가 길어질 때 다음 줄에서 명령어를 이어서 입력하기 위한 것입니다.
$ git log --pretty="%h - %s" --author=dololak --since="2018-01-01" \
--before="2018-02-01" --no-merges -- t
출처 - https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History
'깃(Git)' 카테고리의 다른 글
[Git] 파일 상태를 Staged 에서 Unstaged로 변경하기 (0) | 2018.05.14 |
---|---|
[Git] git commit --amend 커밋 내용 수정하기 (0) | 2018.05.14 |
[Git] git mv 명령으로 파일 이름 변경하기 (0) | 2018.04.26 |
[Git] git rm 명령으로 파일 삭제하기 (1) | 2018.04.25 |
[Git] git commit 명령어를 통한 변경사항 커밋하기 (0) | 2018.04.25 |