[MAC OS] 터미널 GIT 커스텀

SungBum Park·2021년 3월 1일
1

환경설정 및 세팅

목록 보기
2/2
post-thumbnail

git alias

터미널에서 git 명령어를 사용하다보면, 가장 번거로운 작업이 무수히 반복되는 똑같은 단어를 작성해야 한다는 것이다. 실수할 일도 많고, 매우 매우 귀찮다. 이를 해결하는 방법은 터미널에서 alias 를 제공한다.
git도 제공하고, zsh도 제공한다.

먼저, git alias를 설정하는 법을 살펴보자.

vi ~/.gitconfig

.gitconfig 파일은 git의 설정 값을 작성하는 파일이다. git 설정 관련은 이 링크를 살펴보자.

이 파일을 열어보면 일반적으로 다음과 같을 것이다.

[difftool "sourcetree"]
        cmd = opendiff \\"$LOCAL\\" \\"$REMOTE\\"
        path =
[mergetool "sourcetree"]
        cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \\"$LOCAL\\" \\"$REMOTE\\" -ancestor \\"$BASE\\" -merge \\"$MERGED\\"
        trustExitCode = true
[user]
        name = parker
        email = parker@gmail.com

[user] 섹션에는 자신의 git 이름과 이메일을 볼 수 있다. alias는 다음과 같이 추가하면 된다.

[difftool "sourcetree"]
        cmd = opendiff \\"$LOCAL\\" \\"$REMOTE\\"
        path =
[mergetool "sourcetree"]
        cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \\"$LOCAL\\" \\"$REMOTE\\" -ancestor \\"$BASE\\" -merge \\"$MERGED\\"
        trustExitCode = true
[user]
        name = parker
        email = parker@gmail.com
[alias]
    s = status -s
    co = checkout
    ci = commit
    br = branch

위는 가장 일반적으로 사용하는 git alias의 모습이다. 위와 같이 작성한 후, 저장을 하자.
그러면 다음과 같이 터미널에서 사용할 수 있다.

git s
git co -b another-branch
git ci -m "commit message"
git br

위와 같이 작성하면, git alias 섹션에 설정한대로 명령어를 실행해준다. 매우매우 편리한 기능이다.

이 블로그를 보면, 매우 편리하고 심화된 alias 설정을 할 수 있다. 이 블로그를 포함하여 개인적으로 유용하게 사용하는 목록은 아래와 같다.

개인적으로 사용하는 git alias 목록

# branch
brd = "!git branch -D"

# checkout
chb = "!git checkout -b"
cht = "!git checkout -t"
ch = "!git checkout $(git branch -vv | grep -v '^\\*' | fzf | awk '{print $1}')"

# log
l = "log \
    --color --graph --decorate \
    --date=format:'%Y-%m-%d' \
    --abbrev-commit \
    --pretty=format:'%C(red)%h%C(auto)%d %s %C(green)(%cr)%C(bold blue) %an'"

git name, email 변경하기

나를 포함해서 git 계정을 여러가지 사용하는 사람이 많다. 특히, 한 컴퓨터에서 여러 계정을 사용하다보면 계정을 계속 변경해야 한다. 이를 직접하기에는 매우 귀찮고, 오타를 발생할 확률도 높다. 이 역시 git alias로 해결할 수 있다.

set-info-parker1 = "!git config --global user.name parker1 && git config --global user.email parker1@gmail.com"
set-info-parker2 = "!git config --global user.name parker2 && git config --global user.email parker2@gmail.com"

나는 여기서 현재 터미널에서 git 계정이름을 보고 싶었다. 이는 zsh 설정을 변경해야 한다.

zsh 터미널에서 현재 git 계정 정보 출력하기

먼저, zsh 설정 파일을 열어보자.

vi ~/.zshrc

이를 열어보면, 자신이 설정한 테마(theme)를 볼 수 있을 것이다.

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See <https://github.com/ohmyzsh/ohmyzsh/wiki/Themes>
ZSH_THEME="agnoster"

나는 agnoster 테마를 사용하고 있다. 내 목적은 아래 그림과 같이 터미널의 가장 마지막에 현재 git 이름(name)을 보고 싶다.

위는 테마의 git 설정으로 보여주는 출력이므로, 테마 설정을 변경해야 한다. 테마 설정 파일은 다음 경로에서 확인할 수 있다.

vi /Users/<mac-user>/.oh-my-zsh/themes/agnoster.zsh-theme

<mac-use> 부분은 자신의 현재 유저 이름이 있을 것이다. 위 파일을 열어보면, git을 사용할 때 어떻게 터미널에 그릴 것인지에 대한 코드를 볼 수 있다.

# Git: branch/detached head, dirty status
prompt_git() {
  (( $+commands[git] )) || return
  if [[ "$(git config --get oh-my-zsh.hide-status 2>/dev/null)" = 1 ]]; then
    return
  fi
  local PL_BRANCH_CHAR
  () {
    local LC_ALL="" LC_CTYPE="en_US.UTF-8"
    PL_BRANCH_CHAR=$'\\ue0a0'         # 
  }
  local ref dirty mode repo_path username
  
  # ...생략
  if ...
    vcs_info
    echo -n "${ref/refs\\/heads\\//$PL_BRANCH_CHAR }${vcs_info_msg_0_%%}${mode}"
  fi
}

여기서 중요한 것은 echo 부분이다. 실제로 위 그림에서 값을 보여주는 역할을 하고 있다. 따라서 코드 내부에서 git name 값을 가져오고, echo에 추가하면 내 git name을 볼 수 있다. 간단히 아래와 같이 변경하였다.

username=" [$(git config user.name)]"

echo -n "${ref/refs\\/heads\\//$PL_BRANCH_CHAR }${vcs_info_msg_0_%%}${mode}${username}"
  • username 변수를 적당한 위치(echo 위 어딘가...)에 추가한다.
  • ehco 마지막 부분에 ${username} 을 통해 내 git name 정보를 추가한다.

위와 같이 설정한 후, 저장하면 터미널에서 처음 그림과 같이 나타날 것이다.

참고로 zsh 설정은 각 테마 설정보다 .zshrc 파일의 우선순위가 더 높다. 따라서 .zshrc 에 적용된 설정이 있으면 이 파일을 따른다. git 설정은 테마마다 다를 듯하여 테마 설정에서 추가했지만, 여러 공통 설정은 .zshrc 에 적용하는 것이 편할 것으로 생각된다.

참고자료


profile
https://parker1609.github.io/ 블로그 이전

0개의 댓글