터미널에서 git log 모니터링하기

Hschoi han Lucius.choi님이 일 년 이상전에 작성함. 0 285 
`git` 작업시 `git status` 를 지속적으로 알고 있어야 한다. 매번 `git status` 명령을 입력하는 것은 매우 지루한 일이다. 이 글에서 소개하는 방법을 따라하면, `git status`를 실시간으로 모니터링할 수 있어 매우 편리하다. ## 1. git alias와 watch 명령을 이용하는 방법 `git alias` 3개를 새로 정의한다. ```bash git config --global alias.cstatus "-c color.status=always status --short" git config --global alias.bc "branch --color -v" git config --global alias.ll "log --graph --pretty='format:%C(yellow)%h %C(blue)%cn %C(green) %an %C(red)%d %Creset%s'" ``` 동일한 프로젝트를 분리된 두개의 창에 각각 보이도록 한 후 한 쪽 창에서 아래와 같이 실행한다. ``` $ watch -ct -n 1 "git cstatus && echo && git bc && echo && git ll | head -n 10 && echo && git reflog --color" ``` 매번 이와 같은 명령을 실행하는 것이 번거로울 경우에는 아래와 같이 런커맨트 파일(`.bashrc` 또는 `.zshrc`)에 `alias`를 추가한다. ``` alias watch_git_st="watch -ct -n 1 'git cstatus && echo && git bc && echo && git ll | head -n 10 && echo && git reflog --color'" ``` 변경 후에는 아래와 같이 변경내용을 반영해 주어야 한다. ```bash $ . ~/.bashrc # zsh을 사용할 경우에는 ~/.zshrc ``` 이 방법의 한가지 문제는 커밋 메시지에 한글이 포함될 경우 보이지 않는다는 것이다. ## 2. bash 스크립트 파일을 작성하는 방법 대개 `~/bin` 디렉토리는 디폴트로 PATH에 등록되어 있기 때문에 이 디렉토리에 실행파일을 작성하면 어떤 위치에서도 바로 실행할 수 있다. 터미널에서 `~/bin/` 디렉토리로 이동한 후 `git-loglive` 이름의 파일을 생성한 후 아래의 소스코드를 붙여 넣기 한 후 저장한다. ```bash #!/bin/bash while : do clear git status echo "------------------------------" git --no-pager log --graph --pretty=oneline --abbrev-commit --decorate --all $* sleep 1 done ``` 그리고 이 파일을 실행 모드로 변경하기 위해 아래와 같이 명령을 실행한다. ```bash $ chmod +x ~/bin/git-loglive ``` 이제부터 어느 위치에서도 커맨드라인에서 `$ git loglive` 명령을 실행할 수 있게 된다. 출력하는 커밋 라인수를 명시하고자 할 때는 ```bash $ git loglive -10 ``` 와 같이 `-n` 을 지정하면 된다. > 주의 : git-loglive 실행 명령은 `-` 없이 git loglive 와 같이 실행해도 git-loglive 명령으로 인식된다. 이 방법을 사용할 경우에는 한글로 작성된 커밋 메시지도 잘 보인다. 또한, [git log 옵션](https://git-scm.com/book/ko/v1/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%BB%A4%EB%B0%8B-%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC-%EC%A1%B0%ED%9A%8C%ED%95%98%EA%B8%B0)을 추가하여 실행할 수도 있다. ``` $ git loglive --name-status ``` `git log` 옵션은 아래와 같다. |옵션| 설명| |---|---| |-p |각 커밋에 적용된 패치를 보여준다.| |--word-diff |diff 결과를 단어 단위로 보여준다.| |--stat |각 커밋에서 수정된 파일의 통계정보를 보여준다.| |--shortstat |--stat 명령의 결과 중에서 수정한 파일, 추가된 줄, 삭제된 줄만 보여준다.| |--name-only |커밋 정보중에서 수정된 파일의 목록만 보여준다.| |--name-status |수정된 파일의 목록을 보여줄 뿐만 아니라 파일을 추가한 것인지, 수정한 것인지, 삭제한 것인지도 보여준다.| |--abbrev-commit |40자 짜리 SHA-1 체크섬을 전부 보여주는 것이 아니라 처음 몇 자만 보여준다.| |--relative-date |정확한 시간을 보여주는 것이 아니라 2 주전처럼 상대적인 형식으로 보여준다.| |--graph |브랜치와 머지 히스토리 정보까지 아스키 그래프로 보여준다.| |--pretty |지정한 형식으로 보여준다. 이 옵션에는 oneline, short, full, fuller, format이 있다. format은 원하는 형식으로 출력하고자 할 때 사용한다.| |--oneline |--pretty=oneline --abbrev-commit 옵션을 함께 사용한 것과 동일하다.| ---- References : 1. [Monitoring your git status.](http://blog.tshirtman.fr/2014/2/20/monitoring-your-git-status) 2. [git-loglive](https://gist.github.com/tlberglund/3714970)

Comments (0)