(Mac) -bash : __git_ps1 : 명령을 찾을 수 없습니다


222

터미널에서 명령 promt를 변경하려고합니다. 계속 오류가 발생합니다.

-bash: __git_ps1: command not found

터미널에 그대로 입력하여 시도했습니다 __git_ps1. 나는 또한 그것을 시도했다.bash_profile

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

당신이 보거나 말할 수 있듯이, 예, 자동 완성 기능이 설치되어 있으며 훌륭하게 작동합니다!

" PS1 env 변수가 Mac에서 작동하지 않습니다 "라는 코드를 제공합니다.

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

그래서 나는 .bash_profile무언가를 바꿀 것으로 기대하면서 그것을 추가합니다 . 글쎄. 오류 출력이 변경되었습니다.

다음 .bash_profile은 추가 사항입니다.

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

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

이제 변경된 오류 출력이 있습니다.

sed: (%s): No such file or directory

참고 : 별명을 소스 아래로 이동했습니다. 내가 가진 자식 버전 1.7.12.1을

이것은 간단한 변경이어야합니다. 누군가 제발 도와주세요?

10/13/12 수정

아니요, __git_ps1을 직접 정의하고 싶지 않지만 그렇게함으로써 인식되는지 확인하려고했습니다. 예, .git-completion.bash파일이 설치되어 있습니다. 내 컴퓨터에서 자동 완성을 얻는 방법은 다음과 같습니다.

cd ~
curl -OL https://github.com/git/git/raw/master/contrib/completion/git-completion.bash
mv ~/git.completion.bash ~/.git-completion.bash

A ls -la.git-completion.bash파일 을 나열 합니다.

10/13/12 편집-Mark Longair (아래)로 해결

다음 코드는 .bash_profile다른 사람들이하지 않은 동안 나를 위해 일했습니다 ...

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='Geoff[\W]$(__git_ps1 "(%s)"): '
fi

내 쉘 함수로 git-completion.bash정의 __git_ps1합니다. 당신은합니까? 완성이 효과가 있다는 것을 어떻게 알 수 있습니까? git h<TAB> 을 입력하면 어떻게됩니까 ?
rob mayoff

입력하면 git help [space]
Geoff

수락 된 답변은 양호하지만 git <tab>Mark Longair가 참조한 커밋에 명시된대로 적중하여 프롬프트를 활성화 할 수도 있습니다 .
Jack Frost

좋은 질문 일뿐만 아니라 솔루션을 안내하는 유용한 리소스이기도합니다. 가치가있는 공감대.
Yannis Dran

OS X 10.8.5에서 screen (1) 내부에서 bash를 실행할 때 -f 검사가이 오류를 해결했습니다. 파일이 관계없이 존재하기 때문에 왜 그런지 모르겠지만 감사합니다.
Nick K9

답변:


324

git-completion.bashfrom masterin git의 개발 히스토리 버전을 설치했습니다. 이것은 __git_ps1완성 기능에서 새 파일 ( git-prompt.sh) 로 기능 을 분리하는 커밋 이후 입니다. 근거를 설명하는이 변경을 도입 한 커밋은 af31a456 입니다.

여전히 git 설치와 함께 제공되는 git-completion.bash(또는 git-prompt.sh) 버전을 제공하는 것이 좋습니다 .

그러나 어떤 이유로에서 별도로 다운로드 한 스크립트를 사용하여이 기능을 계속 사용하려면 다음 과 같이 master다운로드해야합니다 git-prompt.sh.

curl -o ~/.git-prompt.sh \
    https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

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

source ~/.git-prompt.sh

그런 다음 PS1포함 된 변수가 __git_ps1 '%s'정상적으로 작동합니다.


__git_ps1을 직접 정의하고 싶지 않은 것이 맞습니다. 나는 그것이 그것을 인식하고 인식하지 못하는지 보려고했습니다. 내 루트에 .git-completion.bash가 있습니다. 자동 완성 작업 방법을 포함하도록 위의 질문을 업데이트하겠습니다.
Geoff

@ designer84 : 추가 정보 주셔서 감사합니다-문제가 무엇인지 분명하다고 생각하고 설명으로 답변을 업데이트했습니다.
Mark Longair

왜 이것이 작동하지 않습니까? 만약 [-f /usr/local/git/contrib/completion/git-completion.bash]; 다음 소스 /usr/local/git/contrib/completion/git-completion.bash export PS1 = '[\ W] $ (__ git_ps1 "(% s)") :'fi
Geoff

5
Homebrew를 통해 설치 한 git 1.8.5.3이 포함 된 OSX 10.9의 경우 git-prompt.shgit-completion.bash`brew --prefix git`/etc/bash_completion.d/있습니다.
dokkaebi

1
MacPorts에서 패키지 git-core가로 교체 될 때 경로가 변경되었습니다. 이 질문을git 참조하십시오.
Ramon de la Fuente

60

OSX 10.9 Mavericks로 업그레이드 한 후 git shell 명령 완료 및 git 프롬프트를 다시 사용하려면 다음 파일을 참조해야했습니다.

내 .bash_profile 또는 이와 유사한 것에서 :

if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash ]; then
    . /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash
fi

source /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh

#shell prompt example
PS1='\u $(__git_ps1 "(%s)")\$ '

이것은 또한 osv 10.9에서 내 문제였습니다
jeremyjjbrown

@marklongair의 승인 된 답변은 좋은 설명이지만 Google에서 오류 메시지를 검색하여 (OS 10.10으로 업그레이드 한 후)이 질문을 발견 했으며이 답변은 내 문제에 대한 가장 간단한 해결책입니다 (단순히 새로운 위치로의 경로 변경). ).
RedBassett

이것은 10.10.5 Yosemite에서 나를 위해 일했지만 git-prompt의 위치를으로 변경했습니다 ~/.git_prompt.sh. 다른 솔루션은 작동하지 않았습니다.
Rein

제안 된 줄을 .bash_profile에 추가 했지만 여전히 오류가 발생합니다.bash: __docker_machine_ps1: command not found
IgorGanapolsky

43

당신은해야

$ brew install bash bash-completion git 설치

그런 다음 .bashrc에 "$ (brew --prefix) / etc / bash_completion"을 입력하십시오.


좋은 대답, git이 brew와 함께 설치되는 경우 가장 좋은 방법입니다. 그러나 나는 당신이 이것을 소싱해야한다고 생각합니다 : source $ (brew --prefix) /etc/bash_completion.d/git-prompt.sh
febLey

1
@febLey 예, 위치가 변경되었습니다. 답변을 업데이트했습니다. 감사.
Steven Shaw

작동하지 않습니다. : 나는 오류를 얻을 bash는 : /usr/local/etc/bash_completion.d/git-prompt.sh : 사용 권한이 거부 bash는 : __docker_machine_ps1 : 명령을 찾을 수 없습니다
IgorGanapolsky

14

다음은 나를 위해 매력처럼 일했습니다.

터미널에서 다음을 실행하십시오.

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

bash_profile 열기 / 만들기 :

$ vi ~/.bash_profile

파일에 다음을 추가하십시오.

source ~/.bash_git
export PS1='\[\033[01;32m\]os \[\033[01;34m\]\w $(__git_ps1 "[%s]")\$\[\033[00m\] '
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"

마지막으로 다음을 사용하여 소싱하십시오.

$ source ~/.bash_profile

이것은의 문제를 해결할 것입니다 bash: __git_ps1: command not found .

또한 프롬프트가 "os"로 변경됩니다. "os"를 다른 것으로 변경하려면 내보내기 PS1 줄에서 "os"문자열을 수정하십시오.


여전히 오류가 발생합니다. sh -c "clear && / bin / bash"bash : __docker_machine_ps1 : Docker CLI를 입력 할 때마다 명령을 찾을 수 없습니다 .
IgorGanapolsky

8

MacOS Sierra 및 git 버전 2.10.1 용 솔루션 <2017-2-06>

1 단계 : 힘내 설치

최신 git을 이미 설치 한 경우이 단계를 건너 뛸 수 있습니다.

브라우저에서 git 패키지를 다운로드 하십시오 https://git-scm.com/download/

참고 : 함께 설치하는 경우 curl [option] https://... 다운로드 옵션으로 시스템이 SSL을 지원하는지 확인해야합니다. 따라서 새로운 comer의 경우 브라우저에서 다운로드하고 git installer에서 직접 설치하는 것이 훨씬 쉽습니다.

설치 확인 :
  • git 디렉토리가 어디에 있는지 보여줍니다 : which git
  • 현재 자식 버전을 표시하십시오 : git --version현재 버전은 2.10.1이어야합니다.

2 단계 : 쉘에 자식 프로파일 추가

  1. 쉘 프로파일을여십시오 :
    • nano ~/.bash_profile또는 nano ~/.bashrc수정 위치에 따라 다릅니다.
  2. 파일에 다음 코드를 추가하십시오.
    • source /usr/local/git/contrib/completion/git-completion.bash
    • source /usr/local/git/contrib/completion/git-prompt.sh

참고 : OSX를 El Capitain으로 업그레이드 한 후 git 설치 위치가 opt / 디렉토리에서 usr / local /로 변경되었으므로 위의 일부 답변이 MacOS Sierra에서 더 이상 작동하지 않는 것입니다.

  1. PS1 구성에 다음 코드를 추가하십시오.

    • 옵션 1 : PS1에 직접 추가 : export PS1='\w$(__git_ps1 "(%s)") > '

      이미 .git-completion.bash홈 디렉토리에 있다는 것을 알고 있기 때문에이 간단한 접근 방식을 선호 하며 그 앞에 다른 프롬프트 형식을 추가 할 수 있습니다. 여기 당신의 참고를위한 나의 개인적인 프롬프트가 있습니다 :export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
    • 옵션 2 : 선택 스크립트 추가

    만약 [-f ~ / .git-completion.bash]; 그때
          PS1 내보내기 = '\ w $ (__ git_ps1 "(% s)")>'
    fi
  2. 프로필을 저장하고 사용하십시오. source ~/.bash_profile또는source ~/.bashrc

이제 git 프롬프트가 올바르게 작동하고 현재 어떤 브랜치를 보여야합니다.

5

요세미티로 업그레이드 할 때도 같은 문제가있었습니다.

이전 경로 대신에 수정 ~/.bashrc해야 source /usr/local/etc/bash_completion.d/git-prompt.sh했습니다.

그런 다음 . ~/.bashrc효과를 얻으려면 소스를 다시 가져 오십시오.


5

색깔을 가진 높은 시에라 청결한 해결책!

다운로드가 없습니다. 양조하지 않습니다. Xcode 없음

~ / .bashrc 또는 ~ / .bash_profile에 추가하십시오.

export CLICOLOR=1
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh
export GIT_PS1_SHOWCOLORHINTS=1
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"
PROMPT_COMMAND='__git_ps1 "\h:\W \u" "\\\$ "'

4

bash의 __git_ps1은 이제 brew가 설치된 git 버전 1.8.1.5의 /usr/local/etc/bash_completion.d에있는 git-prompt.sh에 있습니다.


2

이것은 .bash_profile의 OS 10.8에서 작동합니다.

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='YOURNAME[\W]$(__git_ps1 "(%s)"): '
fi

오류를 수정하지 않습니다 : bash는 : __docker_machine_ps1 : 명령을 찾을 수 없습니다
IgorGanapolsky

2

source /opt/local/share/git-core/git-prompt.shmacports의 경우 : ./profile 에 추가해야했습니다.


1
내가 생각 @IgorGanapolsky 당신이없는 MacPorts를가 설치되어 있습니까? 간단히하세요 touch ~/.profile. /opt/local/share/git-core/git-prompt.sh :하지만 당신은 분명히 파일에 필요
velop

2

Homebrew를 사용하여 Git을 업그레이드하려고하는데 시스템이 일반적으로 최신 상태가되지 않게하려면 ( brew 업데이트에 따라) Homebrew 자체를 최신 상태로 만들어야합니다. : 다음 추적되지 않은 작업 트리 파일을 병합하여 덮어 씁니다. thanks @ chris-frisina)

먼저 Homebrew를 현재 버전과 일치시킵니다.

cd / usr / local
git fetch origin
git reset-하드 원점 / 마스터

그런 다음 Git을 업데이트하십시오.

양조 업그레이드 자식

문제 해결됨! ;-)


2

적어도 Xcode 6에서는 이미 있습니다 git-completion.bash. Xcode 앱 번들 안에 있습니다.

이것을 .bashrc에 추가하십시오.

source `xcode-select -p`/usr/share/git-core/git-completion.bash

2
  1. Git 완료 에서 git-prompt.shgit-completion.bash 파일을 다운로드하십시오.
  2. 파일 이름을 바꿉니다.
  3. 해당 파일을 홈 디렉토리로 이동하십시오.
  4. 소스 파일을 .bash_profile에 추가하십시오.

    source ~/git-completion0.bash
    source ~/git-prompt0.sh
    and four to trigger the code block.
    

1

나는 그것이 진정한 대답이 아니라는 것을 알고 있습니다 ...

내 .bashrc에 git-prompt.sh를 소싱하는 데 이상한 문제가 있었으므로 다른 솔루션을 찾기 시작했습니다. 이 하나 : http://www.jqno.nl/post/2012/04/02/howto-display-the-current-git-branch-in-your-prompt/ 는 __git_ps1을 사용하지 않으며 작동한다고 주장합니다. Mac에서 (현재는 우분투에서 완벽하게 작동하며 쉽게 조정할 수 있습니다).

도움이 되길 바랍니다!


1

나는 Udacity에서 git hub에 대한 과정을 진행 중이었고 같은 문제가있었습니다. 최종 코드는 다음과 같습니다.

# Change command prompt
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \ .   (.*\)/(\1)/'"

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

source ~/.git-prompt.sh
export GIT_PS1_SHOWDIRTYSTATE=1
# '\u' adds the name of the current user to the prompt
# '\$(__git_ps1)' adds git-related stuff
# '\W' adds the name of the current directory
export PS1="$purple\u$green\$(__git_ps1)$blue \W $ $reset"

효과가있다! https://i.stack.imgur.com/d0lvb.jpg


0

이것은 나를 위해 일했고, git 출력과 파일이 변경되었거나 추가되었는지 여부를 프롬프트에 표시했습니다.

GIT_PS1_SHOWDIRTYSTATE=true

. /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-completion.bash
. /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-prompt.sh

PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '

올바른 경로를 사용하십시오! homebrew를 사용 brew list git하여 git을 설치 하고 현재 설치 경로를 얻는 데 사용 했습니다.

하드 코딩 된 경로를 사용하지 않는 것이 좋지만 현재 설치 경로를 얻는 방법을 모릅니다.

더 많은 정보는 여기에 : http://en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/


0

git에는 /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh. 그리고 봐주세요/etc/bashrc_Apple_Terminal .

그래서, 나는 이것을 넣었습니다 ~/.bash_profile:

if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh ]; then
  . /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh
  export GIT_PS1_SHOWCOLORHINTS=1
  export GIT_PS1_SHOWDIRTYSTATE=1
  PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }__git_ps1 '\u:\w' '\\\$ '"
fi

bash: __docker_machine_ps1: command not found
여전히이

0

머리말 : haysclark의 답변 에 댓글을 달지 않고 새로운 답변을 작성 하여 죄송합니다 .

당신은 엑스 코드 또는 가정 양조를 통해 자식을 설치하지 않은 경우, 당신은 가능성에 참조하는 bash는 스크립트 haysclarks를 찾을 수 없습니다 바랍니다 것을 /Library/Developer/CommandLineTools/, 그리고에 /Applications/Xcode.app/Contents/Developer/따라서 .bashrc에 다음 내 포함하는 라인을 만드는 :

if [ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ]; then
    . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
fi

source /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh

git-prompt를 사용하려면 해당 줄이 필요합니다.

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