GIT을 사용하다 보면 자주 사용하는 명령어 중 하나가 바로 [ git log ]이다.

commit list를 보기 위한 목적도 있지만, 현재 HEAD가 어디에 있는지 브랜치 상황은 어떤지 등도 확인할 수가 있다. 물론 가장 큰 이유는 언제 어떤 commit이 들어왔는지 확인하는 것이다.

문제는 git log 명령에 대한 출력 결과에 정말 다양한 취향이 존재하며, 이를 만족시키기 위해 다양한 옵션과 함께 자유롭게 결과 형식을 꾸밀 수 있는 pretty-format을 지원하고 있다.

많이 아는 사람은 입맛에 맞게 꾸미면 되지만, 일반적인 사용자들은 너무 많은 옵션을 어떻게 사용해야 할지 어렵기만 할 뿐이다.


개인적으로 가장 자주 사용하는 옵션은 아래와 같다.

$ git log --oneline --graph --decorate --all


출력 결과는 아래와 같다. 아래에 표시는 안했지만, 색도 입혀져 있다.

$ git log --oneline --graph --decorate --all
* d664401 (HEAD, master) [create] 4th.txt - abc
* b7b48a2 [modify] 3rd.txt - ghi
| * adbdaa8 (develop) [modify] 2nd.txt - ghi
| * 47b5c9d [modify] 1st.txt - def
|/ 
* afa1140 (origin/master) [modify] 2nd.txt - def
* 1abd2f1 [create] 3rd.txt
* 6546134 [create] 2nd.txt
* 2dc1cad [create] 1st.txt


일반적으로는 위와 같은 출력만으로도 대부분의 상황은 해결이 된다. commit list도 보여주고 있고 브랜치의 모습도 그래프 형식으로 보여주고 있으며 commit comments도 잘 보여주고 있다. 거기에다가 HEAD의 위치나 브랜치의 위치도 잘 보여주고 있다.

하지만, 개인적으로 조금 부족한 부분이 있어서 아쉬움이 좀 남았다. 그래서 이런 저런 방안을 찾던 중 git log에서도 지원을 하고 있는 pretty-format에 대해서 알아보았다.

그러던 중 웹에서 몇 몇 훌륭한 예시들을 보게 되었고, 개인적인 입맛에 맞게 살짝 변형을 해보았다.

$ git log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ad)%C(reset) %C(white)%s%C(reset) %C(bold white)<%an>%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=short
* d664401 - (2013-03-09) [create] 4th.txt - abc <worker> (HEAD, master)
* b7b48a2 - (2013-03-09) [modify] 3rd.txt - ghi <worker>
| * adbdaa8 - (2013-03-09) [modify] 2nd.txt - ghi <worker> (develop)
| * 47b5c9d - (2013-03-09) [modify] 1st.txt - def <worker>
|/ 
* afa1140 - (2013-03-09) [modify] 2nd.txt - def <worker> (origin/master)
* 1abd2f1 - (2013-03-09) [create] 3rd.txt <worker>
* 6546134 - (2013-03-09) [create] 2nd.txt <worker>
* 2dc1cad - (2013-03-09) [create] 1st.txt <worker>


앞에서 사용한 것과 조금 차이가 있다. 일단 날짜가 나오고 commiter 계정 정보도 나온다. 물론 앞에서 사용했던 옵션에서 보여주고 있는 정보들은 여전히 나오고 있다.

그런데, 여전히 문제가 하나 있다. log를 확인하고 싶을 때마다 저 옵션을 계속 입력할 수는 없다. 저걸 외워서 하겠다라는 사람이 있으면 대단한 것이 아니라 무식한 것이다.

그래서 사용할 수 있는 방법이 바로 alias를 활용하는 것이다. 한 번 살펴보자.

$ git config alias.view "log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ad)%C(reset) %C(white)%s%C(reset) %C(bold white)<%an>%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=short"


사용법은 간단하고도 유용하다.

$ git view -5
* d664401 - (2013-03-09) [create] 4th.txt - abc <worker> (HEAD, master)
* b7b48a2 - (2013-03-09) [modify] 3rd.txt - ghi <worker>
| * adbdaa8 - (2013-03-09) [modify] 2nd.txt - ghi <worker> (develop)
| * 47b5c9d - (2013-03-09) [modify] 1st.txt - def <worker>
|/ 
* afa1140 - (2013-03-09) [modify] 2nd.txt - def <worker> (origin/master)


일반 명령어처럼 사용할 수가 있다. 더불어 뒤에 옵션도 추가로 사용할 수 있다.


위 샘플을 가지고 각자 취향에 맞는 log 옵션을 찾아보길 권한다. 정말 한 번 고생을 해 놓으면 정말 편리하다 !!!

반응형

앞에서 'git log'를 통해서 로그를 확인했는데,
git 에서 로그를 보다 편하게 볼 수 있는 도구를 제공해준다.

바로 "gitk"


1. Error


$ gitk

'gitk'를 실행하면, 에러가 발생할 수도 있다.
'gitk'는 Tcl/Tk 기반의 프로그램인데, 'Tcl/Tk'가 설치되어있지 않아서 발생하는 에러이다.


$ sudo apt-get install tk

관련 패키지를 설치하면 위 에러는 해결이 된다.


2. gitk


$ gitk

'gitk'는 기본적인 비주얼 'git log' 도구이다.

앞에서 살펴본 커맨드 환경에서의 'git log'에서 했던 대부분의 것들을 GUI 환경에서 확인할 수 있다.


가볍게 여기까지~

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Protocol - Git Server  (0) 2012.02.20
Add last commit - git commit --amend  (0) 2012.02.16
Log - git log  (2) 2012.02.14
Move file - git mv  (0) 2012.02.13
Upgrade GIt (in Ubuntu)  (0) 2012.02.13

열심히 코멘트를 적어가며 commit을 했는데,
그렇게 열심히 기록한 것들을 보려면 어떻게 해야할까?


1. git log


$ git log

그냥 아무런 옵션 없이 'git log'를 하게 되면 지금까지의 기록들을 전부 보여준다.
화면 단위로 끊어서 계속 보도록 하여주는 것이다.


$ git log -2

전부가 아니라 최근 2개만 보고 싶다면 '-2'와 같이 옵션을 붙이면 된다.


2. git log -p


$ git log -p -2

단순히 기록을 보는 것이 아니라 무엇이 변경되었는지를 알고 싶다면 '-p' 옵션을 사용하면 된다.
물론 너무 많은 기록을 보는 것이 아니라 최근의 것을 보고 싶다면 '-2'와 같이 옵션을 붙이면 된다.


3. git log --stat


$ git log --stat -2

'diff' 내용이 너무 많아서 보기 너무 힘들다거나,
빨리 review를 하고 싶을 경우에 사용하면 좋은 옵션이 바로 '--stat'이다.

몇 개의 파일이 변경되었고, 몇 줄이 추가되었으며 몇 줄이 삭제되었는지 계산해서 보여준다.


4. git log --pretty


$ git log --pretty=format:"%h - %an, %ar : %s"

log 결과를 원하는대로 보고 싶을 때 사용하는 옵션이 바로 "--pretty" 이다.

이는 실제로는 로그를 파싱해서 다른 용도로 사용할 때 종종 사용한다.
즉, 파싱하기 좋은 모습으로 출력을 하도록 해서 이를 가지고 응용 프로그램에서 정규식 등을 적용하곤 한다.


5. git log --since


$ git log --pretty=format:"%h - %an, %ar : %s" --since=2.days

최근 2일간의 기록만 보고 싶다면!?
"--since" 옵션을 사용하면 된다!



6. git help log

이 외에도 엄청나게 많은 옵션과 그 사용법이 있다.

$ git help log

사용하다가 잘 모르겠거나, 아니면 제대로 사용하고 싶다면 위의 명령어 처럼 help를 외치면 된다!

너무 많은 옵션과 너무 많은 그 응용으로 인해서 여기에서 소개하는 것은 한계가 있기에.... ^^

(실은 나도 잘 모른다는... ㅋㅋㅋ)

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Add last commit - git commit --amend  (0) 2012.02.16
Log - gitk  (0) 2012.02.15
Move file - git mv  (0) 2012.02.13
Upgrade GIt (in Ubuntu)  (0) 2012.02.13
Remove file - git rm  (0) 2012.02.12

git 의 Review 기능을 설명하고자 하는 것이 아니라,
지금까지 하나씩 알아보았던 것들 중에서 놓친 것이나 조금 더 알아볼 것들에 대해서 언급하고자 한다.


1. stage

   - git 에게 어떠한 action을 취할 대상들을 알려주는 과정이 필요하다.

   - 형상 관리를 하고자 하는 새로운 파일들, 반영을 하고자 하는 수정한 파일들 또는
     파일 이름을 변경하거나 삭제를 하거나 등등의 작업의 대상을 등록하는 것이다.

   - 다시 말하면, commit 을 할 내역을 알려주기 위한 과정이다.

   - 즉, 소스 파일을 수정을 열심히 하고 나서 commit 만 덜렁 하면?! 안된다!
     먼저 'git add'를 통해 stage 상태로 등록을 하고 commit을 해야 한다!


2. git commit -m

   - 간단한 주석과 함께 가볍게 commit을 하기 위해서는 '-m' 옵션을 사용하면 된다.


   - 앞에서 작업했던 것을 그대로 가지고 테스트를 해봤다.


3. git add --all

   - 앞에서 우리는 파일을 staging 하기 위해서 'git add 파일이름' 과 같이 일일이 명시해줬다.
   - 귀찮은 우리를 위해 좋은 옵션이 있다! 'git add --all'



4. git commit

   - 별다른 옵션 없이 그냥 'git commit'을 하게 되면 주석을 적기 위핸 에디터 창이 뜨게 된다.


   - 한글도 별 이상 없이 그냥 된다.
   - 다만 어려운 것은, 주석을 적을 때마다 느끼는 것이지만... 뭐라 적어야 할 지 모르겠다는 점... ^^



5. git config --list & git log

   - 위에서 'git commit'을 하게 되면 에디터가 뜬다고 했는데, 나의 경우에는 'nano'가 떴다.
   - 예전에 이미 다 했던 것이지만, 복습하는 차원에서 다시 한 번 확인만 해보자.


   - 더불어 아쉬운 마음에 'git log'까지 한 번 확인해보자.


오늘은 여기까지~^^

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Git 도우미 - TortoiseGit (in Windows)  (0) 2012.02.05
One Shot - commit  (2) 2012.01.22
Compare - modify (git diff, git log) 2/2  (0) 2012.01.18
Compare - modify (git diff, git log) 1/2  (0) 2012.01.17
Tracking file - ignoring  (0) 2012.01.15

git 에게 관리할 파일을 알려준 다음 우리가 경험하게 되는 다음 일은 바로 파일의 수정이다.
(아래에서 보는 코드의 원본은 open-source 로 진행되는 videoparser 이다)

관리 중인 소스 파일 중 하나를 수정한 이후...


1. modify & git status

   - 코드를 수정한 후 'git status'를 실행한다
   - 'modified' 된 파일이 확인된다.

 



2. git diff

   - 과연 무엇을 수정했는지 그것을 알고 싶으면 'git diff'를 실행하면 된다.



3. git add

   - 수정된 파일을 git 에게 알려주기 위해서는 우선 'git add' 과정을 다시 거쳐야 한다.



4. git commit

   - 최종적으로 'git commit'을 실행하고 코멘트를 적어주면 최종적으로 수정한 내역이 반영된다.



5. git log

   - 'git commit'을 실행하면 최종적으로 어떤 내용이 반영되었는지 알려준다.
   - git 에 반영된 내역들을 확인하기 위해서는 'git log'를 실행하면 볼 수 있다.




만약 여러개의 파일들을 수정하면 그것들을 일일이 하나씩 등록을 해야하는지,
변경한 것을 취소하고 싶을 때 어떻게 하는지 지금 상황에서 궁금한 것이 많겠지만,
차차 추가적으로 확인하도록 하자!!! (절대 지금 졸려서 그런 것 아니다!!! ^^)

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

git Review - stage, add, commit  (0) 2012.01.19
Compare - modify (git diff, git log) 2/2  (0) 2012.01.18
Tracking file - ignoring  (0) 2012.01.15
Tracking file - add, status, commit  (0) 2011.11.30
File Status Lifecycle in GIT  (1) 2011.11.22

+ Recent posts