커맨드 라인에서 * branches *에 대한 자식 자동 완성? 목록을 가져올

Linux 컴퓨터 에서 Git을 사용 하여 분기 를 자동 완성 했습니다 .

[우리가 자식 지점 완료, 얘기 참고 하지 bash는 완료 (예 : 명령, 파일 등). 따라서 전혀 레인의 대답 은]

예를 들어 git checkout+ 를 입력 TAB하고 분기 목록을 가져올 수 있습니다 .

또는 “feb”로 시작하는 모든 분기를 가져 오려면 git checkout feb*+ TAB를 입력 할 수 있습니다 .

Mac에서이 기능을 사용하려면 어떻게해야합니까?

나는 다운로드 및 실행되지 시도 bash-completion/bash_completionbash-completion/bash_completion.sh.in기쁨을하지만. 첫 번째에 대한 오류 메시지가 표시되었습니다 declare: -A invalid_option. 두 번째는 오류가 없었습니다. 내가 git checkout+ TAB인데도 여전히 분기가 아닌 디렉토리에 파일 목록이 표시됩니다. 나는 프로젝트 루트에 있습니다.

디렉토리 및 bash 명령에 대한 자동 완성이 정상적으로 작동하므로 Git에만 해당됩니다.



답변

좋아, 그래서 필요한 자식 자동 완성 스크립트를.

나는이 URL에서 그것을 얻었다 :

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

업데이트 : .bashrc파일 을 축소하기 위해이 코드를 더 간결하게 만들고 있습니다.이 경우에는 다음을 사용합니다.

test -f ~/.git-completion.bash && . $_

참고 : $_이전 명령에 대한 마지막 인수를 의미합니다. 그래서 . $_실행 의미 – “가”인 .git-completion.bash이 경우

이것은 여전히 ​​Ubuntu와 OSX 및 스크립트 .git-completion.bash스크립트가 없는 시스템에서 작동합니다 .

이제 git Tab(실제로 git TabTab) 매력처럼 작동합니다!

추신 : 이것이 박쥐에서 작동하지 않으면 chmod u+x ~/.git-completion.bash필요한 권한을 부여 하기 위해 달려야 할 수도 있습니다 .

  • chmod 파일 권한을 수정하는 명령입니다
  • u 파일을 소유 한 사용자, 기본적으로 작성자, 즉 사용자를 의미합니다.
  • + 권한 설정 / 활성화 / 추가를 의미
  • x 실행 권한, 즉 스크립트를 실행하는 기능

답변

어떤 사람들은 패키지 관리자를 사용하여 Mac OS 패키지의 설치, 업데이트 및 구성을 자동화하는 것을 선호합니다. 저는 패키지 관리자의 팬이며 Homebrew는 Mac OS 용 최고의 패키지 관리자라고 생각합니다 (일부는 사실상 Mac OS 패키지 관리자라고합니다).

Homebrew를 설치하고 나면 bash-completion 과 함께 git 을 간단히 설치할 수 있습니다 .brew install git bash-completion

그런 다음에 다음을 입력해야합니다 ~/.bash_profile.

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
  . `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi

(참고 :이 설치가 404 오류로 실패하고 이미 자식이 설치되어 있으면이 추출 설치의 자식 부분을 제거하십시오.)

brew와 함께 git 및 bash-completion을 설치하는 방법에 대한 자세한 내용은 여기를 참조하십시오.


답변

이것을 터미널에서 실행하십시오 :

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

그런 다음이 작업을 수행하십시오.

vi ~/.bash_profile

이 줄을 추가하십시오 :

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

그게 다야. 이것은 나를 위해 일했습니다.


답변

git그리고 git-completion.bash이미 (맥 OS 명령 줄 도구와 함께 xcode-select --install). bash 자동 완성을 사용하려면 이것을 bash에 추가하십시오 ~/.bash_profile.

[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash

이것은 또한 git 브랜치에 대해 자동 완성 기능을 활성화합니다.


답변

다음은 일부 혼란스러운 부분입니다. 추출 또는 포트가 설치되어 있지만 시스템 git in을 사용하고 /usr/bin/있습니다. 이것을 확인하려면 :

which git

당신이 볼 경우 /usr/bin/git다음 중 하나를 양조가 제대로 구성되지 않았거나 당신은 양조를 통해 자식을 설치하지했습니다.

brew를 통해 git을 설치하면 brew에 대해 bash 완료를 활성화하면 git에 대한 bash 완료도 활성화됩니다. 때문입니다 /usr/local/etc/bash_completion실제로는 모든 것을 소싱 /usr/local/bash_completion.d, 그리고 자식에 대한 양조 패키지가 자식 완료 스크립트를 설치합니다.


답변

“bash_completion”옵션을 활성화하여 MacPorts에서 bash 및 git을 설치할 수 있습니다. 아마도 git과 완료를 최신으로 유지하는 가장 쉬운 방법 일 것입니다.

http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard

MacPorts를 설치하려면 : http://www.macports.org/install.php/

추가 정보

Linux 시스템에서 완료 설정을 찾으려면 /etc/bash_completion.d/git (긴 파일)를 확인하십시오. 완료 프레임 워크가 / etc / bash_completion (/etc/profile.d/bash_completion.sh; / etc / profile의 파일에서 제공)을 통해 소스 프레임 워크에서 제공하도록 설계 되었기 때문에 자체적으로 복사하는 것은 아마 작동하지 않습니다. .d는 / etc / profile에서 제공됩니다).


답변

소싱 후에도 git 완료가 부분적으로 손상된 경우 https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bashgit 버전을 업데이트해야 할 수도 있습니다.

예를 들어 git check+를 입력 TAB하면 올바르게 자동 완성 git checkout됩니다. 그러나 git checkout+를 입력하면 TAB분기 목록이 표시되지 않았습니다 HEAD.

나를위한 해결책은 내 git버전 을 업데이트하는 것이 었습니다 . 나는 2.7.0에 있었는데, 분명히 최신 버전과 호환되지 않았습니다 git-completion.bash. 나는 그것을 실행 brew upgrade git하여 2.13.0으로 업데이트했으며 이제는 지점 이름을 자동 완성합니다.