완성을 사용하지 않는 Homebrew의`git`


144

OSX의 git을 사용할 때 파일을 수정 한 후에 간단히 수행 할 수 있으며 git commit <tab>파일 이름을 수정 된 이름으로 자동 완성합니다. 그러나 homebrew에서 최신 버전의 git을 설치하고 사용하면 해당 기능이 더 이상 작동하지 않습니다 ( <tab>변경 사항이없는 파일을 포함하여 내가 어떤 파일을하고 싶은지를 누르 십시오.) ).

누구든지 왜, 그리고 그것을 해결하는 방법에 대해 약간의 빛을 비출 수 있습니까? homebrew의 git은 최신 버전이므로 사용하는 것이 좋습니다.

내 쉘은 zsh이며 설치 bash-completion또는 zsh-completions작동 하지 않습니다 (homebrew의 설치 후 지침을 따른 후에도).

또한 homebrew와 함께 git을 설치하면

Bash completion has been installed to: /usr/local/etc/bash_completion.d
zsh completion has been installed to: /usr/local/share/zsh/site-functions

그래서 그중 하나를 사용할 수 없어야합니까?


어떤 버전 zshgit당신이 사용하고 있습니까?
simont

사제에서 최신. zsh 5.0.2 및 자식 1.8.1.3
137369

다른 git완료가 작동 합니까 (예 : git co<TAB>==> git commit)?
simont

2
몇 가지 다른 문제가 여기에 있다고 생각하지만 brew를 통해 git을 설치하면이 문제가 해결되었습니다. zsh-completions이전에는 잘 작동했지만 Mac git에 만족하지 않은 것 같습니다 (맹목적으로 0.17.x로 업데이트되었을 수 있음).
ti7

답변:


287

당신은 찾고 있습니다 :

brew install git bash-completion

warpc의 의견에서 알 수 있듯이 ~/.bash_profilehomebrew의 bash-completion 작업을 수행하려면 다음을 추가해야합니다 .

if [ -f $(brew --prefix)/etc/bash_completion ]; then
    . $(brew --prefix)/etc/bash_completion
fi

bash-completion 공식을 설치할 때주의 사항에 위의 내용이 언급되어 있습니다.


참고 :을 통해 Bash v4 이상을 사용하는 경우을 brew install bash사용하려는 경우 brew install bash-completion@2탭 완성을 활성화 ~/.bash_profile하려면주의 사항에 설명 된대로 다음을 추가하십시오 .

export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"

git, docker, youtube-dl 및 $(brew --prefix)/etc/bash_completion.d/디렉토리에 포함될 수있는 기타 완료에는 추가 내보내기가 필요합니다 .


3
내 껍질은 zsh입니다. 그게 내가해야한다는 것을 의미합니까 brew install git zsh-completions? 또한, homebrew와 함께 git을 설치 한 후라고 말하면 Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completion has been installed to: /usr/local/share/zsh/site-functions그중 하나를 사용할 수 없습니까?
user137369

2
설치 bash-completion또는 zsh-completions작동 하지 않음 (설치 후 homebrew의 지침을 따른 후에도).
user137369

12
bash 케이스에 ~ / .bash_profile에 다음 내용을 추가 했습니까? if [-f $ (brew --prefix) / etc / bash_completion]; 그때. $ (brew --prefix) / etc / bash_completion fi
warpc

5
양조하지 않고 git을 이미 설치했습니다. 이제 brew를 사용하여 bash_completion을 설치하고 싶습니다. 나는 bash는 완성을 설치 BREW 실행 코드 위에 추가하지만 운이 없다
MagePsycho

3
brew를 통한 git 설치는 이것이 작동하기 위해 필수적이라는 점은 주목할 가치가 있습니다. git의 사과 버전이 문제의 일부라는 것을 알지 못했습니다. 나는이 대답을 알기 전에
하향 투표했으며 이제는 투표

109

다음은 터미널을 다시 시작할 필요없이 OSX에서 작동하는 git tab complete입니다.

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash && echo "source ~/.git-completion.bash" >> ~/.bash_profile && source ~/.bash_profile

14
를 사용할 때 그것을 하나의 라이너라고 부르는 것은 약간의 사기 &&입니다. 모든 bash 스크립트는 이와 같은 하나의 라이너 일 수 있습니다.
user137369

1
당신은 진정한 MVP입니다!
heez

2
brew install방법 보다 확실히 좋습니다 . 간단하게 작동하기 때문입니다.
dchayka

2
bash가 git-completion 명령을 선택하지 않은 이유에 대한 해결책을 찾기 위해 몇 시간 동안 검색했습니다. 마침내 이것은 효과가있었습니다! 정말 고맙습니다!
TheAmazingKnight

1
이것은 실제 솔루션보다 쉽다
Rigin Oommen

22

다른 사람이 내 멍청한 실수를 저지르는 경우 시도하십시오 brew install git. 나는 gitXcode와 함께 제공 되는 것을 사용하고 있었고 자동 완성을 얻기 위해 Homebrew의 자식을 설치하지 않았다는 것을 몰랐습니다.


19

어떤 이유로 든 파일이 누락 $(brew --prefix)/etc/bash_completion되어 @Graham Perks의 정답이 저에게 효과적이지 않았습니다.

내 경우에는 수정 사항이 끝났습니다.

brew unlink bash-completion
brew link bash-completion

@Graham Pixel의 답변을 따른 후 마침내 나를 위해 일하게되었습니다.
Luke

이것은 OS X Sierra 10.12.6의 Homebrew 1.6.0, git 2.17.0 (hub 2.2.9) 및 bash-completion 1.3에서 나에게 효과적이었습니다.
38 분에 jared

10

나는 실행될 때 $(brew --prefix)/etc/bash_completion반환 된 것을 파악하여 문제를 해결했습니다 Permission denied. 그래서 간단한 후에 :

chmod +x $(brew --prefix)/etc/bash_completion

이제 모든 것이 잘 작동합니다. 그래도 Homebrew가 bash_completion설치시 파일을 실행 파일로 만들지 않는 이유가 궁금 합니다.


5
아니요, 잘못되었습니다. 정의가 쉘에 있도록 bash_completion하기위한 것입니다 source. 실행은 효과가 없습니다.
toddkaufmann

5

작동하는 솔루션을 찾았습니다. 매우 최근 (16 시간 전에 작성되었고 2 시간 전에 커밋 됨)이며 homebrew 에서 직접 가져 옵니다 .

brew install git --without-completions

방금 시도해 보았고 마침내 의도 한대로 작동합니다.


3
git완료하지 않고 설치 하면 완료되지 않은 상황을 어떻게 개선 할 수 있는지 알 수 없습니다. Graham Perks의 답변 stackoverflow.com/a/14970926/1199564 가 정답 으로 표시되어야 한다고 생각 합니다.
mgd September

비슷한 문제가 있었고 표준 절차에 git --without-completions따라 bash-completion.bash파일을 다시 설치 하고 소싱하는 것이 해결되었습니다 .bash_profile.
Leonardo

1
이것은 정답이 아닙니다. @graham perks의 답변이 맞습니다.
CantGetANick

@CantGetANick Graham의 답변으로 문제를 해결하지 못했습니다. 그래서 표시했습니다.
user137369

1
user137369와 100 % 동의 : 이미 homebrew의 bash-completion 패키지가 설치되어 있으므로 @graham의 답변이 작동하지 않을 수 있습니다. 그러나 brew install git모든 것을 수정했습니다 (완료없이 필요 없음). 나는 이것이 또한 정답이라고 생각합니다.
bronson

5

나는 같은 문제가 있었고 오늘 아침 에이 게시물을 찾았습니다. brew를 업데이트 brew update한 다음 git을 다시 설치 하여 문제를 해결했습니다 brew reinstall git.

그런 다음 homebrew 연결 프로세스를 차단하는 다른 파일에 대한 알림을 받았습니다 /usr/local/share/zsh/site-functions/git-completion.bash. 파일을 제거하고 실행 brew link git하면 문제가 해결되었습니다. 그것은 우리가 우연히 발견 한 나쁜 레시피 버전 일뿐입니다.


1
또한 사용중인 자식 버전이 Apple의 버전이며 Homebrew가 설치 한 버전이 아니라는 것을 알 수 있습니다. 적어도 내 경우에는 그렇게했습니다. 다음으로 버전을 확인할 수 있습니다git --version
Jonathan Knapp

아니. 그것은 여전히 ​​나를 위해 작동하지 않습니다. 나는 항상 OSX의 git 사용으로 돌아 왔습니다. 완료는 너무 큰 기능입니다.
user137369

매버릭스로 업데이트 한 후 git-completion이 작동하지 않았습니다. 나는 brew reinstall git또한 brew reinstall bash-completion그것을 다시 작동시켜야했습니다.
Krešimir Nesek

3

$BASH_VERSION<4.1 인 경우 3.2.57(1)-release다음과 같이 진행하십시오.

brew install bash-completion
# In ~/.bash_profile :
if [ -f $(brew --prefix)/etc/bash_completion ]; then
    . $(brew --prefix)/etc/bash_completion
fi

그러나 brew install bash버전을 얻으려면 4.4.12(1)-release 다음에서 더 좋고 완전한 완성을 사용할 수 있습니다.

brew install bash-completion@2
# In ~/.bash_profile:
[ -f "$(brew --prefix)/share/bash-completion/bash_completion" ] \
&& . "$(brew --prefix)/share/bash-completion/bash_completion"

일부 패키지 (brew, docker, tmux)는 여전히 다음과 $(brew --prefix)/etc/bash_completion.d/같이 추가 할 수도 있습니다.

for completion in "$(brew --prefix)/etc/bash_completion.d/"*
do
    . $completion
done

마지막으로 어떤 이유로 든 git을 설치 한 방식으로 스크립트를 추가하지 않은 경우 git complete 스크립트를 추가 할 수 있어야합니다.

[[ -f $(brew --prefix)/etc/bash_completion.d/git \
|| -f $(brew --prefix)/share/bash-completion/completions/git ]] \
|| curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash \
    -o $(brew --prefix)/etc/bash_completion.d/git

위의 내용으로 가져와 추가 할 수 있습니다.


2

1 단계 : 자동 완성 스크립트 다운로드 :

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

2 단계 : .bash_profile 및 .bashrc 업데이트

echo "source ~/git-completion.bash" >> .bash_profile

https://www.anintegratedworld.com/git-tab-autocomplete-on-osx-10-11-el-capitan/을 통해

위의 방법으로 문제가 해결되지 않으면 https://github.com/bobthecow/git-flow-completion/wiki/Install-Bash-git-completion을 시도 하십시오.


1

나를 위해, 나는 넣어

source $(brew --prefix)/etc/bash_completion

.bashrc(.bash_profile 아님)에 넣으면 작동합니다.

".bash_profile은 로그인 쉘에 대해 실행되는 반면 .bashrc는 대화 형 비 로그인 쉘에 대해 실행됩니다."-. bash_profile과 .bashrc의 차이점은 무엇입니까? .bash_profile새 터미널 창을 열 때 MacOS Sierra가 실행되지 않는 것 같습니다..bashrc .

업데이트를 적용하려면 재부팅 / 로그 아웃해야했기 때문에 _bash_profile에 넣지 않았습니다.


1

이것은 Mojave (OSX 10.14.1)에서 나를 위해 일했습니다.

brew install bash-completion

그런 다음 ~ / .bash_profile에 다음 줄을 추가하십시오.

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

그것은 단지 경고의 수를 곱한 것입니다
Hussain Akram

1

2019 년 Bash v5를 사용하면 git bash 완성 스크립트를 .bash_profile또는.bashrc

  1. 다음 두 줄이 있는지 확인하십시오. .bashrc
export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
  1. 망할 놈의 bash는 완료 스크립트 (다운로드 https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash)와에 저장 /usr/local/etc/bash_completion.d/git

그게 다야! Bash는 자동으로 git 완료 파일을 선택하고 완료를 활성화합니다.


참고 : .bashrc대화식 쉘 (예 : from pipenv shell)에 드롭 할 때 bash가 소스가 .bashrc되고 NOT 으로 완료가 올바르게로드 되도록 모든 변경 사항을 적용하는 것이 좋습니다 .bash_profile.


0

Lion에서는 readline 대신 libedit을 사용하는 것과 관련이있을 수 있습니다.

자식 전에 readline을 설치하십시오.

brew install readline

0

이미 bash-completion을 설치 한 사람들을 위해. git completion 스크립트가 설치되어 있지 않아 탭을 찾을 수 없습니다.

그래서 수동으로 추가했습니다.

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o $(brew --prefix)/etc/bash_completion.d/git

파일 이름을 바꾸고 확장자를 제거해야 작동합니다.

완료 또는 자식이 설치되어 있지 않은 경우 승인 된 답변에 설치하십시오.

brew install git bash-completion


0

homebrew를 사용하여 git을 설치했다면 아마도 git complete를 지원하기 위해 아무것도 설치할 필요가 없습니다. "git-completion.bash"파일이 어딘가에 있습니다 (내 위치 : /usr/local/git/contrib/completion/git-completion.bash)

파일을 찾기 만하면됩니다 : sudo find / -type f -name "git-completion.bash"

그런 다음 .bash_profile에 경로를 제공하십시오. 예를 들어 ~ / .bash_profile에이 줄을 추가해야했습니다.

source /usr/local/git/contrib/completion/git-completion.bash

~ / .bash_profile을 소싱하거나 터미널을 다시 여는 것을 잊지 마십시오.)

from : how-enable-git-tab-completion-bash-mac-os-x


@ user137369 그것은-이미 여기에 설치된 것들을 설치할 필요가 없습니다 원인
Dozon Higgs

0

나는 이것이 오래된 게시물이라는 것을 알고 있지만 실제로 추가 패키지를 설치할 필요는 없습니다.

Homebrew는 필요한 모든 것을 갖춘 디렉토리가 있음을 알려줍니다.

.bash_profileBash를 사용하는 경우 다음 행을 간단하게 추가 할 수 있습니다 .

source /usr/local/etc/bash_completion.d/git-completion.bash

-1

MAC-OS Mojave 10.14에서 GIT 명령의 자동 완성 활성화 개발자이며 항상 명령 줄에서 GIT를 사용합니다. 개발 관점을 고려할 때 GIT 작업을 위해 명령 줄을 사용하여 많은 명령을 실행했습니다. 대부분의 경우 MAC OS가 부분적으로 지원하는 명령 완료를 자동으로 지원하지 않습니다. 명령 제안뿐만 아니라 입력 된 문자에 사용할 수있는 명령을 의미합니다. 따라서 오타가 잘못되면 매우 긴 명령과 대부분의 반복 작업을 입력하는 것은 매우 번거로운 일입니다. :(

탭 완성은 확실히 빠르고 쉽습니다. 불행히도 일부 Mac 컴퓨터에서 git의 기본 설치에는 탭 완성 기능이 활성화되어 있지 않습니다.

그래서 문제에 대한 해결책을 찾고 있었으며 웹 검색에서 StackOverflow, GitHub 및 매체와 같은 몇 가지 솔루션이 발견되었습니다. 불행히도, 이러한 솔루션은 저에게 효과적이지 않았으며 여러 번 다른 솔루션을 시도하는 것에 좌절했습니다.

나는 깊게 검색하고 다른 솔루션을 시도했지만 다행히 쉽게 해결할 수 있습니다. 다음은 여러 게시물에서 수집 한 단계이며 마지막으로 예상대로 작동했습니다. 그래서 나는 나 같은이 문제가 다른 사람들과 공유하고 싶습니다.

f 웹 검색으로 이동하면 git completion bash 파일을 언급 한 많은 솔루션을 찾을 수 있습니다. GitHub 가이드도 마찬가지입니다. 그러나 git-completion.bash 파일이 이미 git-core 또는 설치에서 제공된 다른 것들과 함께 MAC 컴퓨터에 있는지 확인하는 것이 좋습니다. 아래 명령을 사용할 수 있습니다.

sudo find / -type f -name "git-completion.bash"

아래 결과를 얻을 수 있습니다. (내용에 따라 약간의 차이가있을 수 있습니다)

/Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
/Users/Dilanka/git-completion.bash
/Users/Dilanka/.oh-my-zsh/plugins/gitfast/git-completion.bash
/Users/Dilanka/Downloads/git-completion.bash

git-core에서 설치된 것을 선택하는 것이 좋습니다.

만약 git-completion.bash 스크립트가 당신의 컴퓨터에 존재하지 않는다면, 아래 제공된 스크립트를 검색하여 / usr / local / etc /에있는 git-completion.bash라는 새로운 파일에 로컬 컴퓨터에 저장하십시오. bash_completion.d / 디렉토리.

https://git-scm.com/book/en/v1/Git-Basics-Tips-and-Tricks

Bash 셸을 사용하는 경우 Git에는 사용 가능한 멋진 자동 완성 스크립트가 제공됩니다. Git 소스 코드에서 직접 다운로드하십시오.

https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

git-completion.bash 스크립트가 시스템에 있지만 /usr/local/etc/bash_completion.d/ 디렉토리에없는 경우 해당 디렉토리를 작성하고 파일을 해당 디렉토리에 복사해야합니다. 아래 명령은 작업을 수행합니다.

sudo mkdir /opt/local/etc/bash_completion.d
sudo cp /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash

위의 완료 후. git-completion.bash 스크립트는 로컬 컴퓨터의 /usr/local/etc/bash_completion.d/ 디렉토리에 있어야합니다.

이제 아래 명령을 사용하여 프로파일을 새로 고쳐야합니다. 추가 된 bash 파일을 터미널 컨텍스트에로드합니다.

source ~/.bash_profile

큰!!! 당신은 그것을했습니다. 터미널 창을 시작하고 시도하십시오. "git sta"를 입력하면 다음과 같이 제안 사항이 표시됩니다.

git sta
stage    stash    status
git chec<TAB> will show git checkout

내 GitHub 게시물을 참조하십시오 :

https://github.com/DIL8654/Enable-Auto-Completion-of-GIT-commads-on-MAC-OS-Mojave

여기 내 중간 게시물을 참조하십시오.

https://medium.com/@dilanka85/enable-auto-completion-of-git-commands-on-mac-os-mojave-10-14

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