티스토리 뷰

Untitled Document.md

Git을 GUI로 사용하시는 분 계신가요?

개인적으로 GUI 버전은 자신만의 기능으로 확장할 수 없어서 별로라고 생각합니다. :p

여기서 소개할 내용은 Git을 커맨드라인으로 사용할 때 유용한 기능들 입니다.

참고로 이 내용들은 Mac 환경에 맞추어져 있습니다.

Git Command Completion

터미널 명령어나 파일명처럼 Tab 키를 눌렀을 때 자동 완성되는 것처럼 Git 옵션도 자동완성이 된다면 얼마나 편리할까요?

g..i..t.. c.h...e.c..k..o..u..t.. 일일이 full-name으로 옵션을 타이핑하는 일은 고역이 아닐 수 없습니다. :/

자동완성 스크립트 다운로드

https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

위 링크에서 bash 스크립트를 다운받아 적당한 곳에 저장합시다. 저는 ~/git-completion.bash 저장해 두었습니다.

참고로 스크립트는 100여명의 contributor 들에 의해 개선되었습니다.

협업 도구의 아이콘인 Git으로 Git을 위한 스크립트를 협업하다니.. 넘나 멋지지 않나요? ㅋㅋ

스크립트 실행

현재 프로세스에 바로 적용하기 위해서 source ~/git-completion.bash 실행할 수 있으나 매번 실행하기엔 불편하니 .bash_profile추가 합시다.

# .bash_profile 적당한 곳에 입력해요.

# git-completion
source ~/git-completion.bash

확인 해 봅시다.

$ git che                                  # 여기까지만 타이핑하고 Tab Tab
checkout      cherry        cherry-pick    # 사용할 수 있는 옵션들이 출력됩니다.

Git Alias

제목에서 눈치채신 분 계신가요?

네. Git 명령어를 줄여주는 기능이죠. 바로 해볼까요?

$ git config --global alias.unstage 'reset HEAD --'

위 alias는 staged 파일을 unstaged 상태로 돌려놓는 명령어

git reset HEAD <FILE> 을 git unstage <FILE> 로 줄였습니다!

Git alias는 특히 git log 등 명령어의 출력 포맷을 변경하는 옵션들을 사용할 때 그 위력이 발휘 되는데요.

이번에는 명령어로 alias를 저장하지 말고 .gitconfig를 수정 해봅시다.

.gitconfig는 git 설정 파일로 ~/.gitconfig에 있습니다.

# .gitconfig 내 적당한 곳에 입력합시다.

[alias]
    lg = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold red)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(cyan)<%an>%C(reset)%C(bold yellow)%d%C(reset)' --all
$ git lg

* 8b21fc3 - (13 days ago) Add "Setup docker environment on OSX" <user2> (HEAD -> master, origin/master, origin/HEAD)
* 7ace711 - (3 weeks ago) Delete deeplearning/ <user1>
* 53947e9 - (3 weeks ago) Update README.md <user2>
* e414753 - (3 weeks ago) Add "Building with unity through Command Line" <user2>
* 18cedde - (5 weeks ago) Remove code-blending <user2>
* 9fac535 - (5 weeks ago) Code blending - "print pattern" with shell script <user2>
...

git log가 더욱 멋있게 변했습니다! 트리 출력까지 지원해요!

실제로 터미널에서 보면 강조 색상으로 더욱 화려하게 보인답니다. :D

터미널 Prompt에 branch 표시하기

마지막으로 알려드릴 기능은 깃 프로젝트로 (.git 존재하는 디렉토리) 작업 영역을 이동하면 현재 작업하고 있는 branch 이름이 출력되는 기능입니다.

park@parkui-MacBook-Pro cat-logic (master) $

이렇게 말이죠! 일일이 git branch 입력할 필요 없어서 편리하겠죠?

Prompt 출력 포맷을 변경해야 하기 때문에 .bash_profile 수정합시다.

정확히는 Prompt 포맷 양식을 가진 환경변수 PS1 값을 변경합니다.

# .bash_profile 적당한 곳에 입력하세요.

# Git branch in prompt.
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

확인 해 봅시다.

parkdu@dupark-imac master-pad (master) $ git checkout develop 
Switched to branch 'develop'
Your branch is up-to-date with 'origin/develop'.
parkdu@dupark-imac master-pad (develop) $ 

정말 편리한 기능입니다. 단순 반복 타이핑을 획기적으로 줄여주는 기능이라고 생각해요.

Reference

Git Completion : https://git-scm.com/book/en/v1/Git-Basics-Tips-and-Tricks

Git Alias : https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-Git-Alias

Git Alias (git lg) : https://www.slideshare.net/kexplo/ndc2016-effective-git/107







Written By Edunga1

댓글
댓글쓰기 폼