ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git 명령어 자동완성
    OS/Linux 2020. 10. 30. 10:58

    터미널 환경에서 git 명령어를 사용하다 보면 git <command> ~ 식으로 명령을 사용하게 되는데 command가 자동완성이 되지 않아서 매우 불편합니다...

    그래서 자동완성을 하고자 인터넷을 뒤져 보면 git-completion.bash를 내려받고 .bash_profile을 이용해서 해당 스크립트를 실행시키라며 아래의 명령어를 알려주는 곳이 대부분입니다.

    curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

    위의 명령어로 git-completion.bash를 받아서 .bash_profile에 내려받은 스크립트를 실행하는 코드를 아래와 같이 추가를 합니다.

    if [ -f ~/.git-completion.bash ]; then
        . ~/.git-completion.bash
    fi
    

     

    그리고는 git che 까지만 입력하고 탭을 누르면 자동완성이 되겠지 하는 꿈에 부풀며 탭을 눌러보면 안 됩니다... 동작을 안 해요.

    해결 방법을 찾기 위해 이것저것 삽질을 하다 우여곡절 끝에 동작하지 않던 원인을 찾아내었습니다!

    바로...

    git의 버전 때문이었습니다.

    제가 사용하는 시스템에 설치된 git에서 해당 스크립트가 동작하지 않는 것이 아니라 인터넷에서 알려주는 대로 내려받은 git-completion.bash과 제 장비에 있는  git의 버전이 맞지 않았습니다.

    raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash 주소를 자세히 보면 master...

    master에서 해당 스크립트를 내려받는 것을 확인할 수가 있습니다. 자동완성 기능을 사용하려는 git의 버전과 내려받은 master 버전이 호환이 되지 않아서 생기는 문제였습니다.

    원인을 찾았으니 이제 해결을 해보도록 하겠습니다.

    먼저 시스템의 git 버전을 확인합니다.

    $ git --version
    git version 2.10.0

    제 장비는 2.10.0 버전이 설치되어 있군요. 그리고 위의 주소의 master 부분을 아래와 같이 수정하고 명령을 수행합니다.

    raw.githubusercontent.com/git/git/v2.10.0/contrib/completion/git-completion.bash

    $ curl https://raw.githubusercontent.com/git/git/v2.10.0/contrib/completion/git-completion.bash -o ~/.git-completion.bash

    그리고 .bash_profile에 아래의 코드를 작성합니다.

    if [ -f ~/.git-completion.bash ]; then
        . ~/.git-completion.bash
    fi
    

    작성이 완료된 후 git che 까지만 입력하고 tab을 누르면 아래와 같이 명령어 목록이 나오는 걸 볼 수 있습니다!

    $ git che
    checkout      cherry        cherry-pick

    시키는 대로 했는데 왜 안 되는 건지 정말 많은 삽질을 했는데 개발 환경이 아주 쪼끔이라도 편해진 거 같아 너무 뿌듯하네요 ㅎㅎ

    댓글

2017 TIFY Team All Rights Reserved.