gitstatus 소개

singleheart·2023년 1월 29일
0

터미널에서 git을 사용하다 보면 git status를 자주 쳐서 상태를 확인하게 됩니다. 간단한 명령이지만 수십 번 반복하는 것도 번거롭기 때문에 최대한 간단히 보고 싶습니다. IDE를 쓰면 수월하게 확인할 수 있지만 터미널이 필요한 일은 생기게 마련이고요. 

가장 좋은 방법은 powerlevel10k (https://github.com/romkatv/powerlevel10k)처럼 git 상태를 보여주는 쉘 테마(theme)를 쓰는 것입니다. agnoster나 skwp 같은 유명한 테마도 프롬프트에 git 상태를 포함하여, 현재 저장소에 변경사항이 있는지 색깔로 표시해 줍니다.

프롬프트를 최대한 간단히 유지하면서 git 상태만 표시하고 싶을 수도 있습니다. 이럴 때 유용한 gitstatus를 소개합니다. 사실 powerlevel10k를 만든 romkatv (Roman Perepelitsa)가 만든 유틸리티인데요, 일반적인 git status보다 매우 빠르게 작동하기 때문에 터미널에서 엔터를 마구 쳐도 빠르게 상태를 표시해 줍니다. 원리상 gitstatus는 libgit을 사용해서 구현하였으니 git에 내장된 커맨드들에 비해서 특별히 빠를 이유가 있나 싶습니다만, 리누스 토르발스가 git을 만들면서 status 명령을 사람들이 이렇게까지 자주 타이핑할 것은 예상하지 못하고 구현해서 속도 최적화를 덜 한 것이 아닌가 하는 추측이 있습니다. (다만, 이 추측은 검증된 사실은 아닙니다 :) )

gitstatus는 https://github.com/romkatv/gitstatus 웹사이트에서 받으실 수 있고요, 설치는 bash인 경우 아래와 같이 합니다 (다른 shell을 쓰는 분들은 앞의 웹사이트를 참고하세요. 저는 zsh를 추천합니다)

git clone --depth=1 https://github.com/romkatv/gitstatus.git ~/gitstatus
echo 'source ~/gitstatus/gitstatus.prompt.sh' >> ~/.bashrc

. ~/.bashrc 또는 source ~/.bashrc 명령으로 위 설정을 적용하거나, shell에 다시 접속하신 다음, git 저장소로 이동하시면 아래와 같이 git 상태가 표시되는 것을 보실 수 있습니다. 

?는 untracked file이 생겼다는 뜻, +는 git add 했지만 아직 커밋하지 않은 파일이 있다는 뜻, ⇡1은 remote에 푸시할 수 있는 커밋이 1개 있다는 뜻입니다. 자세한 설명은 웹사이트에서 확인하실 수 있습니다.

bash shell에서 다른 프롬프트를 사용하면서 gitstatus를 함께 사용하고 싶은 경우

혹시 bash shell에서 다른 프롬프트를 사용하면서 gitstatus를 함께 사용하고 싶은 경우에는 bash에서 gitstatus의 프롬프트가 gitstatus_prompt_update라는 함수로 구현되었다는 것을 알고 계시면 됩니다. 예를 들어 pyenv를 함께 쓸 때, pyenv의 상태를 프롬프트로 보여주는 함수가 pyenvVirtualenvUpdatePrompt일 때 pyenv의 상태와 gitstatus를 함께 프롬프트로 보여주려면 ~/.bashrc에 export PROMPT_COMMAND="pyenvVirtualenvUpdatePrompt;gitstatus_prompt_update"라고 추가해 주시면 되겠습니다. 

profile
개발자

0개의 댓글