Git에서 커밋 히스토리를 확인할 때, 브랜치 흐름을 시각화되어 있으면 보기 편하다. 이 때 사용 하는 것이 --graph 옵션이다. 그런데 git log 커맨드를 사용할 때 매번 --graph 옵션을 넣어주면 불편하다. 이걸 자동화하는 방법은 아래와 같다.

편집기로 .bashrc 파일을 열고 하단에 아래 스크립트를 추가한다.

# git 명령어를 가로채서 처리할 함수를 정의
function git() {

    # $1은 첫 번째 인자. git 다음에 오는 명령어가 "log"인지 확인
    if [[ $1 == "log" ]]; then

        # shift는 첫 번째 인자(log)를 제거하고 나머지 인자들을 앞으로 당김
        shift

        # $*는 모든 옵션 인자들을 하나의 문자열로 합친 것
        # " $* "처럼 앞뒤로 공백을 넣어 정확한 옵션 매칭을 보장 (graphical 같은거랑 헷갈리면 안되니)
        # --graph 옵션이 없는지 확인
        if [[ ! " $* " =~ " --graph " ]]; then

            # --graph 옵션이 없으면 추가해서 실행
            # command는 함수가 아닌 실제 git 명령어를 실행
            # "$@"는 모든 인자들을 개별 인자로 전달
            command git log --graph "$@"
        else
            # --graph 옵션이 이미 있으면 그대로 실행
            command git log "$@"
        fi
    else
        # log 명령어가 아닌 경우 모든 인자를 그대로 전달
        command git "$@"
    fi
}

그런 후 터미널을 다시 열거나 source ~/.bashrc등으로 변경 사항을 적용한다.

Posted by 공돌이pooh
,