git bash 명령 줄 완성을 구성하는 방법은 무엇입니까?


130

예를 들어 새로운 우분투 머신에서 방금 실행 sudo apt-get git했으며 예를 들어 입력 할 때 완료가 없습니다 git check[tab].

http://git-scm.com/docs 에서 아무것도 찾지 못했지만 IIRC 완성은 요즘 git 패키지에 포함되어 있으며 bashrc에 올바른 항목이 필요합니다.


Ubuntu Precise (및 Fedora 17)에서 바로 사용할 수 있습니다.
기계 달팽이

2
기본적으로 있는지 여부를 확인하려면을 실행할 수 있습니다 (cd ~ && exec cat .bashrc | grep completion).
aderchox

답변:


181

Linux에서

대부분의 배포판에서 git 을 설치할 때 git 완료 스크립트가 /etc/bash_completion.d/(또는 /usr/share/bash-completion/completions/git)에 설치되므로 github로 이동할 필요가 없습니다. 당신은 그것을 사용하기 만하면됩니다-이 줄을 당신의 .bashrc:

source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git

일부 Ubuntu 버전에서는 git autocomplete가 기본적으로 손상 될 수 있습니다.이 명령을 실행하여 다시 설치하면 문제가 해결됩니다.

sudo apt-get install git-core bash-completion

Mac에서

Homebrew 또는 MacPorts를 사용하여 git 완성을 설치할 수 있습니다.

홈브류

경우 $BASH_VERSION> 4 : brew install bash-completion@2(업데이트 된 버전) MacOS 기본으로 3.2.57 (1) 릴리스와 함께 제공되는 bash 버전을 특별히주의하십시오.

추가 .bash_profile:

  if [ -f /usr/local/share/bash-completion/bash_completion ]; then
    . /usr/local/share/bash-completion/bash_completion
  fi

이전 버전의 bash의 경우 : brew install bash-completion

추가 .bash_profile:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

MacPorts

sudo port install git +bash_completion

그런 다음 이것을 추가하십시오 .bash_profile:

if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
fi

이 가이드의 추가 정보 : Bash git 완료 설치

모든 경우에 변경 사항을 적용하려면 새 셸 (새 터미널 탭 / 창 열기)을 만들어야합니다.


1
대부분의 * nix 상자 (특히 Ubuntu)에는 이미 해당 파일이 있으므로 사용자에게 소싱하여 문제를 해결했습니다. 감사.
nevvermind

5
우분투는 /etc/bash_completion.d/git-prompt로있을 수 있습니다
Catskul

2
Git은 있지만 /etc/bash_completion.d는 없습니다
sixty4bit 2014

13
내 Ubuntu 14.04에서이 파일은 /usr/share/bash-completion/completions/git. /etc/bash_completion.d/git-prompt완료가 아닌 git 프롬프트 지원에 사용됩니다.
Ray Chen

18
경고 : 자작 할을 통해 자식이 설치되어있는 경우 맥 사제 방법에만 작동 brew uninstall bash-completion후, brew install git당신은 자식 전에 다른 방법을 통해 설치 한 경우, 위의 단계가 작동합니다.
patapouf_ai

66

나는 같은 문제가 있었고 아래 단계를 따랐다.

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

그런 다음 .bash_profile(일반적으로 홈 폴더 아래에) 다음 줄을 추가하십시오.

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

출처 : http://code-worrier.com/blog/autocomplete-git/


저는 프록시 뒤에 있었기 때문에 컬이 작동하려면 먼저 프록시를 설정 export https_proxy=proxy_ip:proxy_port해야했습니다. 시스템에서 설정을 가져 오지 못하는 이유를 알 수 없습니다.
madlymad

2
이름 앞에 점으로 파일을 숨길 필요는 없습니다. 또한 : git 버전에주의하십시오 (wisbucky의 답변 참조)
Walter Tross

42

표시되는 대부분의 지침은 다운로드하라고 알려줍니다.

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

bash 시작 스크립트에서 .bashrc.

하지만 .NET master의 최신 버전 인 브랜치를 참조하기 때문에 문제 가 git-completion.bash있습니다. 문제는 설치 한 git 버전과 호환되지 않기 때문에 가끔 고장날 수 있다는 것입니다.

사실, 지금은 master브랜치에 git-completion.bashgit v2.18이 필요한 새로운 기능이 있기 때문에 지금 당장 은 패키지 관리자와 설치 관리자가 아직 업데이트하지 않은 새로운 기능이 있습니다. 오류가 발생합니다.unknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

따라서 가장 안전한 해결책은 설치 한 git과 일치하는 버전 / 태그를 참조하는 것입니다. 예를 들면 :

https://raw.githubusercontent.com/git/git/v2.17.1/contrib/completion/git-completion.bash

참고 그것이 가지고 v2.17.URL에 대신 master. 그리고 물론 bash 시작 스크립트에서이를 소싱해야합니다.


이것이 최고의 macOS 답변입니다.
AShelly

와우 ... 약 한 시간 동안 내 머리를 찌르고 나서 당신의 의견이 핵심이었습니다. 이 솔루션에 감사드립니다! 황금!
미케 카터

4
macos 버전 별 파일은 이미 디스크에 있어야 /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash합니다. 안전을 위해 github의 2.17.1 버전과 비교했는데 일치합니다.
jmt

18

Ubuntu 14.10

설치 git-core하고bash-completion

sudo apt-get install -y git-core bash-completion
  • 현재 세션 사용

    source /usr/share/bash-completion/completions/git
  • 모든 세션에 대해 항상 사용하려면

    echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc

1
당신은이 : LTS 우분투 16.04에 나를 위해 일한 감사합니다
Mrunal Pagnis


5

다음에서 수행하십시오 ~/.bashrc.

source /usr/share/bash-completion/completions/git

다른 답변은 설치하라고 말합니다. bash-completion 있지만 그렇게 할 필요는 없지만 그렇게하면 완성을 직접 가져올 필요가 없습니다. 둘 중 하나만 수행합니다.

보다 일반적인 솔루션은 bash-completion 프로젝트에서 권장하는대로 시스템 위치를 쿼리하는 것입니다.

source "$(pkg-config --variable=completionsdir bash-completion)"/git

1
귀하의 일반 솔루션은 Ubuntu 18.04에서 완벽하게 작동했습니다. 부팅 방법은 매우 간결합니다. 감사합니다!
Jason R Stevens CFA

4

내 우분투에는 여기에 파일이 설치되어 있습니다.

source /etc/bash_completion.d/git-prompt

링크를 따라 /usr/lib/git-core폴더 로 이동할 수 있습니다 . 거기에서 지침, PS1 설정 또는 사용 방법을 찾을 수 있습니다.__git_ps1


3

누군가에게 도움이 될 수 있습니다 :-

다음 링크에서 .git-completion.bash를 다운로드 한 후,

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

__git_ps1 함수를 사용하려고하면 다음과 같은 오류가 발생했습니다.

 -bash: __git_ps1: command not found

__git_ps1은 git-prompt.sh에 정의되어 있으므로이 명령이 작동하려면 master에서 별도로 스크립트를 다운로드해야합니다. 따라서 .git-completion.bash 다운로드와 유사하게 git-prompt.sh를 가져옵니다.

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

.bash_profile에 다음을 추가하십시오.

source ~/.bash_git
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
export PS1='\W$(__git_ps1 "[%s]")>'
fi

source ~ / .bash.git은 다운로드 한 파일을 실행하고

export PS1='\W$(__git_ps1 "[%s]") 명령은 현재 작업 디렉토리 (git 저장소 인 경우) 뒤에 체크 아웃 브랜치 이름을 추가합니다.

따라서 다음과 같이 보일 것입니다.

dir_Name[branch_name] 여기서 dir_Name은 작업 디렉토리 이름이고 branch_name은 현재 작업중인 브랜치의 이름입니다.

참고-__git_ps1은 대소 문자를 구분합니다.


1

아치 리눅스

/usr/share/git/completion/git-completion.bashbash 시작 파일 중 하나의 소스 .

예를 들면 :

# ~/.bashrc

source /usr/share/git/completion/git-completion.bash

다른 위치에서 스크립트를 찾을 수 /usr/share/bash-completion/completions/git있지만 이러한 스크립트는 저에게 적합하지 않았습니다.


-1

우분투

여기에 아름다운 답이 있습니다 . Ubuntu 16.04에서 나를 위해 일했습니다.

윈도우

Git Bash 는 자동 완성을 허용하는 도구입니다. 이것이 표준 배포의 일부인지 확실하지 않으므로이 링크 도 유용하다는 것을 알 수 있습니다 . 그건 그렇고, Git Bash는 Linux 쉘 명령 을 사용하여 Windows에서 작업 할 수 있습니다. 이는 GNU / Linux 환경에 대한 경험이있는 사람들에게 좋은 일입니다.


-1

Git 프로젝트의 Github에서 git 명령을 자동 완성하는 bash 파일을 제공합니다.

홈 디렉토리에 다운로드하고 bash가 실행하도록해야합니다. 그것은 단순히 두 단계이며 다음 블로그 게시물에서 완벽하게 설명합니다.

코드 걱정 블로그 : autocomplete-git /

나는 그것을 Mac에서 테스트했으며 다른 시스템에서도 작동해야합니다. 다른 운영 체제에도 동일한 접근 방식을 적용 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.