내 Linux 시스템에는 Git을 사용하여 브랜치 자동 완성 기능이 있습니다.
[참고로 bash 완료가 아닌 git 분기 완료 (예 : 명령, 파일 등). 따라서 Lane의 대답 이 전혀 아닙니다.]
예를 들어 git checkout
+를 입력 할 수 있습니다. TAB 및 분기 목록을 가져옵니다.
또는 git checkout feb*
+ TAB 를 입력하여 모든 “feb”로 시작하는 브랜치.
Mac에서이 기능을 어떻게 얻을 수 있습니까?
bash-completion/bash_completion
를 다운로드하여 실행 해 보았습니다. bash-completion/bash_completion.sh.in
그러나 기쁨이 없습니다. 첫 번째는 declare: -A invalid_option
에 대한 오류 메시지를 표시했습니다. 두 번째는 오류를 표시하지 않았습니다. 내가 + TAB 그래도 브랜치가 아닌 디렉토리에 파일 목록이 표시됩니다. 저는 프로젝트 루트에 있습니다.
디렉토리 및 bash 명령은 정상적으로 작동하므로 Git에만 해당됩니다.
댓글
- 방금이 커뮤니티에 가입하여 ‘ 아직 답변하지 못했지만 ” oh-my-zsh ” 매우 유용하고 UI가 정말 마음에 듭니다. github.com/ohmyzsh/ohmyzsh 이것은 물론 zsh를 사용하는 사람들을위한 것입니다. ‘ Bash에서 작동하지 않는다고 가정합니다. ‘ …
Answer
알았으므로 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 && . $_
참고 : $_
는 이전 명령에 대한 마지막 인수를 의미합니다. 따라서 . $_
는 실행을 의미합니다. “it”는이 경우 .git-completion.bash
입니다.
이것은 Ubuntu와 OSX 및 스크립트 .git-completion.bash
스크립트가없는 시스템
이제 git
Tab ( 실제로는 git
Tab Tab )가 매력처럼 작동합니다!
ps : 그렇지 않은 경우 “방망이없이 작업하지 마세요. chmod u+x ~/.git-completion.bash
를 실행하여 필요한 권한을 부여해야 할 수도 있습니다.
-
chmod
는 파일 권한을 수정하는 명령입니다. -
u
는 파일을 소유 한 사용자 (기본적으로 작성자)를 의미합니다. -
+
는 권한 설정 / 활성화 / 추가를 의미합니다. -
x
는 실행 권한, 즉 script
코멘트
- 예, bash 스크립트를 추가 한 후 터미널을 다시 시작하면 작동합니다.
m
Tab
Models 폴더에 계속 자동 완성을 시도하는 이유가 궁금합니다. / div>를 사용하여master
에 자동 완성되도록합니다. - unix.stackexchange.com/q/도 참조하세요. 48862/10043 다른 팁
- 수락 된 답변이 ‘ 누구에게도 작동하지 않는 경우 다음을 시도해보세요.
source ~/.bash_profile
코드를 붙여 넣은 후. 터미널을 다시 시작해도 동일한 작업이 수행됩니다. - 감사합니다! 다른 작업을 시도했지만 아무것도 작동하지 않았습니다 (이 github.com/bobthecow/git-flow-completion/wiki/ … ). 귀하의 솔루션은 매력처럼 작동했습니다.)
- (당신은 ‘ brew
git
는 없지만 Apple 기본값은)
brew install git
및git checunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config usage: git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | --no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>]
와 같은 이상한 오류가 발생하는 사람들을 위해 터미널을 다시 시작합니다.
답변
어떤 사람들은 Mac OS 패키지의 설치, 업데이트 및 구성을 자동화하기 위해 패키지 관리자를 사용하는 것을 선호합니다. 저는 패키지 관리자의 팬이며 Homebrew가 Mac OS를위한 최고의 패키지 관리자라고 생각합니다 (일부는 “사실상 Mac OS 패키지 관리자라고도합니다).
Homebrew를 설치 한 후에는 git 를 bash-completion (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 오류로 실패하고 이미 git이 설치되어있는 경우이 brew 설치의 git 부분을 제거하십시오.)
추가 정보 여기에서 brew와 함께 git 및 bash-completion을 설치하는 방법에 대해 설명합니다.
댓글
-
git
그리고bash-completion
를 추가하는 것은.git-completion.bash
를 추가하는 것과 전혀 같지 않습니다. 그들은 다른 프로그램이고 아주 다른 일을합니다. 하나는 bash 명령을합니다. autocompletion과 다른 하나는 git 명령 autocompletion을 수행하고 ‘ nair가 만날 것입니다;) - 매력처럼 작동합니다. 감사합니다.
~/.bash_profile
에 추가 한 스크립트를 사용하십니까? - 이 답변에 대해 다른 사람들이 말한 내용에도 불구하고 git 자동 완성 작업을 수행하게 한 것은 n 터미널.
-
~/.bash_profile
에 추가 할 줄은 homebrew의 출력에서 지정되었습니다. 위의 줄 대신 사용했습니다. 그런 다음source ~/.bash_profile
Answer
터미널에서 실행 :
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
그게 다입니다. 이것이 저에게 효과적이었습니다.
코멘트
- (2 단계) 텍스트 편집기로 bash_profile을 여는 것을 선호하는 사람은 다음과 같이하십시오. open -e .bash_profile
- 최신 Mac OS High Sierra에서는
~/.bash_profile
파일이 ‘ 존재하지 않습니다. 그 ‘ 괜찮습니다. 파일을 만들고 거기에if
스크립트를 저장하고 저장하세요. 나중에 셸을 다시로드하면 작동합니다. - 나. vi (항상 힘들어하는) 대신 open -e ~ / .bash_profile
- 두 번째 단계에서는 이 링크
답변
git
및 git-completion.bash
는 이미 macOS 명령 줄 도구 (xcode-select --install
)와 함께 제공됩니다. 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 브랜치에 대한 자동 완성이 사용됩니다.
댓글
- 명령 줄 도구가 설치되어 있지만 ‘ 확실히 해당 파일은 설치되어 있지 않습니다. ‘ 제 경우에는 존재하지 않습니다. 하지만 brew와 함께하게되어 기쁩니다 (그리고 내 자식도 brew와 함께 있기 때문에 아마도 현명 할 것입니다).
- 감사합니다! IMO, 녹색 확인 표시가있는 답이되어야합니다.
- 가장 간단한 솔루션이며 저에게 적합합니다.
- 이 방식은 저에게 효과적이지만 약간 다른 형식을 사용했습니다. .
if [ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ]; then . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash > /dev/null fi
- 답은 효과가 있었지만
~/.bash_profile
에 주어진 줄을 추가 한 후source ~/.bash_profile
(특히~/.bash_profile
파일을 처음 만드는 경우)
답변
여러분을 혼란스럽게하는 부분은 다음과 같습니다. brew 또는 포트가 설치되어 있지만 . 이를 확인하려면 :
which git
/usr/bin/git
가 표시되면 양조가 “올바르게 구성되지 않았거나” brew를 통해 git을 설치하지 않았습니다.
brew를 통해 git을 설치 한 경우 brew에 대한 bash 완료를 활성화하면 git에 대한 bash 완료도 활성화됩니다. 이는 /usr/local/etc/bash_completion
가 실제로 /usr/local/bash_completion.d
의 모든 것을 소싱하고 git 용 brew 패키지가 거기에 git 완료 스크립트를 설치하기 때문입니다.
댓글
- 이렇게 말이되지만 ” brew에 Bash 완성을 사용하도록 설정하는 방법 “? 당신은 ‘ 방법이 누락되었습니다. 이것은 답변의 일부 여야합니다.
- simplified.guide/macos/bash-completion ,하지만 자동 완성이 몇 초 지연됩니다 … 이상 함
답변
Catalina 이상에서 Git 자동 완성 (Homebrew 사용)
macO가 bash에서 변경됨 에서 zsh 를 Catalina로 시작하는 기본 셸로 설정합니다.
따라서 zsh에 대한 특정 자동 완성 스크립트가 필요합니다.
Homebrew를 사용하여 설치하는 방법은 다음과 같습니다.
brew install zsh-completion
Brew “의 zsh-completion에는 실제로 git-completion이 포함되어 있습니다.
자동 완성을 활성화하려면 ~/.zshrc
에 작은 코드 블록을 추가해야합니다. 아직 존재하지 않는 경우 해당 파일을 사용자 폴더에 만들어야 할 수 있습니다. 참고 : 위 설치 스크립트의 출력은 추가 할 코드를 정확히 알려주므로주의 깊게 읽고 거기에서 복사하십시오. 여기에 작성한 이후로 업데이트 된 경우
if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi
중요 :
설치가 완료되면 설치 스크립트의 출력을 읽습니다 .
It .zshrc에 코드를 추가하도록 지시 할뿐만 아니라 zcompdump 강제 재 구축과 같이 필요할 수있는 추가 작업에 대한 조언도 제공합니다. 그러나 대부분의 경우 추가 단계가 필요하지 않습니다.
댓글
- 터미널은 매번 성가신 메시지를 표시합니다. ‘가 열렸습니다.
zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?
하지만 작동합니다! - 이 커뮤니티에 가입하여 ‘ 아직 대답하지 않았지만 ” oh-my-zsh “가 매우 유용하다는 것을 알았고 UI가 정말 마음에 듭니다. github.com/ohmyzsh/ohmyzsh 이것은 물론 zsh를 사용하는 사람들을위한 것입니다. ‘ Bash에서 작동하지 않는다고 가정합니다. ‘ …
Answer
“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에서 가져옴).
Answer
소싱 후에도 git 완성이 부분적으로 손상된 경우 https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
, git 버전을 업데이트해야 할 수도 있습니다.
예 : git check
+
, 올바르게 자동 완성됩니다. git checkout
.하지만 git checkout
+ , 분기 목록이 표시되지 않고 HEAD
만 표시됩니다.
git
버전. 2.7.0을 사용 중이 었는데, 이는 최신 git-completion.bash
와 호환되지 않는 것 같습니다. brew upgrade git
, 2.13.0으로 업데이트했으며 이제는 prop 내 브랜치 이름이 잘못 자동 완성됩니다.
댓글
- 같은 문제가 발생했지만
brew upgrade git
및brew link git
(재정의 활성화 됨) - @Tope를 잡아 주셔서 감사합니다.
update
를upgrade
로 변경했습니다.
답변
지금까지이 문제를 해결하기 위해 찾은 최고의 참고 자료는 iv id =의 SpinDance 입니다. “43e953db90”>
Connor Livingston :
git- complete.bash 스크립트가 컴퓨터에 없습니다. 위에서 제공 한 링크 ( this ) 및 파일의 git-completion.bash 라는 새 파일에 로컬 컴퓨터에 저장합니다. /usr/local/etc/bash_completion.d / 디렉토리. git-completion.bash 스크립트가있는 경우 컴퓨터에 있지만 /usr/local/etc/bash_completion.d / 디렉터리에 없으면 해당 디렉터리에 복사본을 만들어야합니다. 빠른 sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash 이 트릭을해야합니다. /usr/local/etc/bash_completion.d / 디렉토리에 대해 궁금한 사람들을 위해 : 새 완료 명령을 저장하기위한 것이며 아직 존재하지 않는 경우 만들어야 할 수도 있습니다. 이 시점에서 git-completion.bash 스크립트는 /usr/local/etc/bash_completion.d / 디렉토리의 로컬 시스템에 있어야합니다. 이제 ~ / .bash_profile 에서 가리켜 git 완료 스크립트를 bash에 연결합니다.
참고 : 이전 문장의 물결표는 컴퓨터의 홈 디렉토리를 나타냅니다. ~ / .bash_profile 에 다음 줄을 추가합니다. source /usr/local/etc/bash_completion.d/git-completion.bash 및 저장합니다. 마지막 단계는 bash 프로필을 다시로드하는 것입니다. 현재 bash 세션에서 source ~ / .bash_profile 를 실행하여이를 수행 할 수 있습니다.
답변
설치 a> zsh를 기본 셸로 설정하고 나중에 감사합니다. 🙂
댓글
- 정확히 문제를 해결하기 위해-탭을 누른 후에도 분기 제안이 없습니다.
- 실제로 oh-my-zsh 또는 별도의 플러그인 시스템이 전혀 필요하지 않습니다! Git 완성 기능은 기본적으로 제공되며 활성화하기 만하면됩니다.
답변
해보았습니다. 브랜치에서는 잘 작동하지만 git st
+ tab
를 수행하면 다음과 같은 오류가 표시됩니다.
알 수없는 옵션 : –list-cmds = list-mainporcelain, others, nohelpers, alias, list-complete, config 사용법 : git [–version] [–help] [-C] [-c =] [–exec-path [=]] [–html-path] [–man-path] [–info-path] [-p | –paginate | –no-pager] [–no-replace-objects] [–bare] [–git-dir =] [–work-tree =] [–namespace =] []
인터넷을 검색 한 결과 .git-completion.bash
의 --list-cmds
가 최신 버전의 git 및 내 Mac에서 git 버전은 2.17.2
솔루션은 다음과 같습니다.
솔루션 1
-
git --version
명령을 사용하여 git의 버전을 확인하세요. -
그런 다음 URL에 제가 한 것과 동일한 버전 번호를 입력하세요.
curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash
-
그런 다음 상위 답변과 동일한 단계를 따르고
~/.bash_profile
에 아래 코드를 입력합니다. p>if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
솔루션 2
git 버전을 최신 버전으로 업데이트해야 작동합니다.
답변
대부분의 사용자는 xcode 명령 줄의 일부로 git
를 설치합니다. /usr/bin/git
및 bash completio의 도구 git에 대한 n 규칙은 /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
에서 사용할 수 있습니다.
이 경우 Homebrew에서 git을 설치하거나 raw.githubusercontent.com에서 소스 git 완성 규칙을 설치할 필요가 없습니다. 다음과 같이 심볼릭 링크를 만드십시오.
cd /usr/local/etc/bash_completion.d/ ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git
참고 : 다음에서 bash-completion
패키지를 설치하고 구성했는지 확인하십시오. Homebrew.
Answer
macOS Catalina +의 경우 zsh
:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.git-completion.zsh
그런 다음 ~/.zshrc
를 다음으로 업데이트하십시오.
if [ -f ~/.git-completion.zsh ]; then . ~/.git-completion.zsh fi
답변
.bashrc
파일을 찾습니다.
파일을 열고 추가합니다. 맨 아래 줄 :
source /etc/bash_completion.d/git
댓글
- 동의합니다. ‘ 상대적으로 새로운 시스템 (OSX 10.10.3)에
/etc/bash_completion.d/
폴더가 없습니다. - 만들기 시도
- bash_completion이 아니라 git_completion이 다른 작업을 수행합니다.
- @MichaelDurrant 작동합니다. Trust Me.;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
- @crmpicco
/etc/bash_completion.d/git
생성에 대한 지침을 제공해 주시겠습니까? 귀하의 답변을 더 가치있게 만들 것입니다.