(Mac) -bash: __git_ps1: komut bulunamadı


222

Terminaldeki komut tanıtımımı değiştirmeye çalışıyorum. Hatayı almaya devam ediyorum:

-bash: __git_ps1: command not found

Sadece olduğu gibi terminale yazarak denedim: __git_ps1. Ben de denedim.bash_profile

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

Gördüğünüz / söyleyebileceğiniz gibi, evet, otomatik tamamlama yüklü ve harika çalışıyor!

Bu soruya rastladım: " PS1 env değişkeni mac üzerinde çalışmıyor "

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

Bu yüzden bir .bash_profileşeyleri değiştireceğini umuyorum. Öyleydi. Sadece hata çıktısını değiştirdi.

İşte .bash_profileek ile:

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

Ve şimdi değişen hata çıktısı:

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

Not: Diğer adı da kaynağın altına hiçbir fark olmadan taşıdım. Ben git sürüm 1.7.12.1

Bu basit bir değişiklik olmalı. Birisi bana yardım edebilir mi?

Düzenle 10/13/12

Hayır, kesinlikle __git_ps1'i kendim tanımlamak istemiyorum ama sadece bunu yaparak tanınıp tanınmadığını görmeye çalışıyordum. Evet, .git-completion.bashdosyayı yükledim. Makinemde otomatik tamamlama yöntemini aşağıda bulabilirsiniz.

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

A ls -lasonra .git-completion.bashdosyayı listeler .

Düzenle 10/13/12 - Mark Longair tarafından çözüldü (aşağıda)

Aşağıdaki kod benim için çalıştı .bash_profilesüre diğerleri işe yaramadı ...

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

Benim kabuk işlevi olarak git-completion.bashtanımlar __git_ps1. Seninki mi? Tamamlamanın işe yaradığını nasıl anlarsınız? git h<Sekme> yazdığınızda ne olur ?
rob mayoff

Bunu yazdığımda git help [space] ile bitiyor
Geoff

Kabul edilen cevap iyidir ancak istemi git <tab>Mark Longair tarafından atıfta bulunulan taahhütte belirtildiği şekilde de etkinleştirebilirsiniz .
Jack Frost

Bu sadece iyi bir açıklayıcı soru değil, aynı zamanda çözüme yön veren yardımcı bir kaynaktır. Haklı bir upvote.
Yannis Dran

OS X 10.8.5'te ekranın (1) içinde bash çalıştırılırken -f denetimi bu hatayı düzeltmek için çalıştı. Hiçbir fikrim yok, çünkü dosya ne olursa olsun var, ama teşekkürler hiçbiri az!
Nick K9

Yanıtlar:


324

git-completion.bashFrom master- in geliştirme geçmişini, bu __git_ps1işlevi tamamlama işlevinden yeni bir dosyaya ( git-prompt.sh) ayıran bir işlemden sonra yüklediniz . Gerekçeyi açıklayan bu değişikliği getiren taahhüt, af31a456'dır .

Yine de git kurulumunuzla birlikte gelen git-completion.bash(veya git-prompt.sh) sürümünü kullanmanızı öneririm .

Ancak, bazı nedenlerden dolayı master, ayrı olarak indirilen komut dosyalarını kullanarak bu işlevi kullanmaya devam etmek istiyorsanız , git-prompt.shbenzer şekilde indirmeniz gerekir :

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

... ve aşağıdaki satırı ekleyin ~/.bash_profile:

source ~/.git-prompt.sh

Sonra PS1içeren değişken __git_ps1 '%s'iyi çalışır.


__Git_ps1 'i kendim tanımlamak istemediğim konusunda haklısın. Sadece fark edip etmediğini görmeye çalışıyordum. Kökümde .git-completion.bash var. Otomatik tamamlamayı nasıl çalıştıracağımı içerecek şekilde yukarıdaki sorumu güncelleyeceğim ...
Geoff

@ designer84: ekstra bilgi için teşekkürler - bence sorunun ne olduğu artık açık ve cevabımı bir açıklama ile güncelledim.
Mark Longair

Bu neden çalışmıyor? eğer [-f /usr/local/git/contrib/completion/git-completion.bash]; fi: o = '[\ W] $ (__ git_ps1 "(% s)")' /usr/local/git/contrib/completion/git-completion.bash export PS1 kaynak
Geoff

5
Homebrew üzerinden yüklenen Git 1.8.5.3'teki ile OSX 10.9, hem git-prompt.shve git-completion.bashbulunur `brew --prefix git`/etc/bash_completion.d/.
dokkaebi

1
MacPorts, yol paket değişti git-coreyerini gitgörmek bu soruyu
Ramon de la Fuente

60

OSX 10.9 Mavericks'e yükselttikten sonra, git shell komutunun tamamlanması ve git isteminin tekrar çalışması için aşağıdaki dosyalara başvurmak zorunda kaldım.

.Bash_profile veya benzerlerinden:

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)")\$ '

Bu da
osv

@Marklongair tarafından kabul edilen yanıt iyi bir açıklama olsa da, bu soruyu Google'da bir hata mesajı aramasıyla buldum (OS 10.10'a yükselttikten sonra) ve bu cevap sorunum için en basit çözüm (sadece yeni konuma giden yolu değiştirerek) ).
RedBassett

Bu benim için çalıştı 10.10.5 Yosemite, ancak git-istemi konumunu değiştirdi ~/.git_prompt.sh. Diğer çözümler işe yaramadı.
Rein

Önerilen satırlarınızı .bash_profile dosyasına ekledim , ancak yine de hatayı alıyorum:bash: __docker_machine_ps1: command not found
IgorGanapolsky

43

Malısın

$ brew install bash bash-completion git

Ardından .bashrc dosyanızda "$ (demlemek --prefix) / etc / bash_completion" kaynağını kullanın.


Harika cevap, git demlemek ile monte edilirse kesinlikle en iyi yol. Ama bu kaynak gerekir düşünüyorum: kaynak $ (demlemek
düzeltme

1
@febLey Evet, konum değişti. Cevabı güncelledim. Teşekkürler.
Steven Shaw

Bu işe yaramıyor. Hata alıyorum: bash: /usr/local/etc/bash_completion.d/git-prompt.sh: İzin reddedildi bash: __docker_machine_ps1: komut bulunamadı
IgorGanapolsky

14

Aşağıdaki benim için bir cazibe gibi çalıştı:

Terminalinizde aşağıdakileri çalıştırın:

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

Bash_profile dosyasını açın / oluşturun:

$ vi ~/.bash_profile

Dosyaya aşağıdakileri ekleyin:

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"

Son olarak, şunu kullanarak kaynak yapın:

$ source ~/.bash_profile

Bu sorunu çözecektir bash: __git_ps1: command not found.

Ayrıca isteminiz "os" olarak değişecektir. Başka bir şeye "os" değiştirmek için, PS1 dışa aktarma satırında "os" dizesini değiştirin.


Hala Docker CLI'ye her girdiğimde sh -c "clear && / bin / bash" bash: __docker_machine_ps1: komut bulunamadı hatası alıyorum.
IgorGanapolsky

8

MacOS Sierra ve git sürüm 2.10.1 <2017-2-06> için çözüm

Adım 1: Git'i yükleyin

En son git'i zaten yüklediyseniz bu adımı atlayabilirsiniz.

Git paketini tarayıcıdan indirin https://git-scm.com/download/

Not: curl [option] https://...indirme seçeneğiyle yüklerseniz , sisteminizin SSL'yi desteklediğinden emin olmanız gerekir. Yani yeni gelen için, tarayıcıdan indirmek ve doğrudan git installer'dan yüklemek çok daha kolay.

Kurulum Doğrulaması:
  • Git dizininizin nerede olduğunu gösterin: which git
  • Git'inizin şu anda hangi sürümü olduğunu gösterin: git --versiongeçerli sürüm 2.10.1 olmalıdır.

2. Adım: Git profilinizi kabuğunuza ekleyin

  1. Kabuk profilinizi açın:
    • nano ~/.bash_profileveya nano ~/.bashrcDeğişikliklerinizin nerede olduğuna bağlıdır.
  2. Aşağıdaki kodu dosyaya ekleyin:
    • source /usr/local/git/contrib/completion/git-completion.bash
    • source /usr/local/git/contrib/completion/git-prompt.sh

Not: git yükleme konumu opt / dizininden usr / local / OSX'e yükseltildikten sonra El Capitain'e değiştirildi ve bu yüzden yukarıdaki eski yanıtlardan bazıları MacOS Sierra'da artık çalışmıyor.

  1. PS1 yapılandırmanıza aşağıdaki kodu ekleyin:

    • Seçenek 1: Doğrudan PS1'inize ekleyin: export PS1='\w$(__git_ps1 "(%s)") > '

      Bu basit yaklaşımı tercih ediyorum çünkü zaten .git-completion.bashana dizinimde olduğunu biliyorum ve önüne başka bir bilgi istemi biçimi ekleyebilirim. İşte referans için kişisel istemim:export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
    • 2. Seçenek: Seçim komut dosyası ekleyin

    eğer [-f ~ / .git-completion.bash]; sonra
          PS1'i dışa aktar = '\ w $ (__ git_ps1 "(% s)")>'
    fi
  2. Profili kaydedin ve kullanın: source ~/.bash_profileveyasource ~/.bashrc

Şimdi git komutunun düzgün çalıştığını görmeli ve şu anda hangi dalda olduğunuzu göstermelisiniz.

5

Yosemite'e yükseltme yaparken de aynı problem yaşadım.

Sadece değiştirmek zorunda ~/.bashrciçin source /usr/local/etc/bash_completion.d/git-prompt.shyerine eski yolun.

sonra . ~/.bashrcefekti almak için yeniden kaynak .


5

Renklerle yüksek Sierra temiz çözümü!

İndirme yok. Demlemek yok. Xcode yok

Sadece ~ / .bashrc veya ~ / .bash_profile'ınıza ekleyin

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 için __git_ps1 artık demlemek yüklü git sürüm 1.8.1.5 üzerinde /usr/local/etc/bash_completion.d içinde git-prompt.sh içinde bulundu


2

Bu .bash_profile içindeki OS 10.8'de çalışır

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

Hatayı düzeltmez: bash: __docker_machine_ps1: komut bulunamadı
IgorGanapolsky

2

Macport için şunu eklemem gerekiyordu: source /opt/local/share/git-core/git-prompt.sh./profile


1
@IgorGanapolsky Sanırım yüklü macport'unuz yok mu? Sadece yap touch ~/.profile. /Opt/local/share/git-core/git-prompt.sh: Ama tabii ki bir dosyayı ihtiyaç
maddelerini geliştirmek

2

Git'i yükseltmek için Homebrew'u kullanmayı umuyorsanız ve sisteminizin genel olarak güncel olmamasına izin verdiyseniz (benim yaptığım gibi), Homebrew'u önce güncel hale getirmeniz gerekebilir ( demleme güncellemesine göre) : Aşağıdaki izlenmeyen çalışma ağacı dosyalarının üzerine birleştirme ile yazılır: thanks @ chris-frisina)

İlk önce Homebrew'u mevcut sürümle aynı hizaya getirin

cd / usr / local
git getirme orijini
git reset --hard orijin / master

Ardından Git'i güncelleyin:

demlemek yükseltme git

Sorun çözüldü! ;-)


2

En azından Xcode 6 ile zaten var git-completion.bash. Xcode uygulama paketinin içinde.

Bunu .bashrc'nize ekleyin:

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

2
  1. Dosyaları indirin git-prompt.sh ve git-completion.bash bundan Git tamamlanmasından
  2. Dosyaları yeniden adlandırın.
  3. Bu dosyaları ana dizininize taşıyın.
  4. Kaynak dosyayı .bash_profile dosyasına ekleyin

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


1

Git hub için Udacity kursunu yapıyordum ve aynı sorunu yaşıyordum. İşte benim doğru yapmak benim son kodu.

# 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"

İşe yarıyor! https://i.stack.imgur.com/d0lvb.jpg


0

Bu benim için çalıştı ve git çıktı ve dosyaların değiştirilip eklenip eklenmediği sorusunda bir gösterge var, içine doğru pişirilmiş:

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\]\$ '

Doğru yolu kullandığınızdan emin olun! Git'i yüklemek için homebrew kullandım brew list git, mevcut kurulumunuzun yolunu almak için kullanın .

Sabit kodlanmış bir yol kullanmamak güzel olurdu, ancak mevcut yüklemeye giden yolu nasıl alacağınızı bilmiyorum.

Daha fazla bilgi burada: http://en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/


0

Git için var /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh. Ve lütfen da bak /etc/bashrc_Apple_Terminal.

Bunları ben koydum ~/.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

Hala bu hatayı alıyorum:bash: __docker_machine_ps1: command not found
IgorGanapolsky

0

Önsöz: samanlıkların cevap cevabı hakkında yorum yapmadığınız ve yeni bir cevap verdiğiniz için üzgünüm , sadece yeterli temsilci değil.

Git'i Xcode veya home-brew üzerinden kurmadıysanız, muhtemelen samanlıkların başvurduğu bash komut dosyalarının içinde olduğunu /Library/Developer/CommandLineTools/ve içinde olmadığını göreceksiniz /Applications/Xcode.app/Contents/Developer/, böylece satırları .bashrc içinde içerecek şekilde yapacaksınız :

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 komut istemini de kullanmak istiyorsanız bu satırlara ihtiyacınız olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.