it-swarm.com.de

(Mac) -bash: __git_ps1: Befehl nicht gefunden

Ich versuche, meine Eingabeaufforderung im Terminal zu ändern. Ich bekomme immer den Fehler:

-bash: __git_ps1: command not found

Ich habe es versucht, indem ich es wie folgt in das Terminal eingetippt habe: __git_ps1. Ich habe es auch im .bash_profile ausprobiert

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

Wie Sie vielleicht sehen/sagen können, habe ich die automatische Vervollständigung installiert und es funktioniert großartig!

Ich bin auf diese Frage gestoßen: " PS1 env variable funktioniert nicht auf mac ", was den Code angibt

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

Also füge ich es meinem .bash_profile hinzu in der Hoffnung, dass es etwas ändert. Nun, das hat es getan. Es wurde nur die Fehlerausgabe geändert.

Hier ist der .bash_profile mit dem Zusatz:

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

Und hier ist die geänderte Fehlerausgabe:

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

Hinweis:Ich habe den Alias ​​auch ohne Unterschied unter die Quelle verschoben. Ich habe Git Version 1.7.12.1

Dies sollte eine einfache Änderung sein. Kann mir bitte jemand helfen?

Bearbeiten 13.10.12

Nein, ich möchte __git_ps1 auf keinen Fall selbst definieren, sondern wollte nur herausfinden, ob es dadurch erkannt wird. Ja, ich habe die .git-completion.bash Datei installiert. So habe ich die automatische Vervollständigung auf meinem Computer erhalten.

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

Ein ls -la listet dann die .git-completion.bash-Datei auf.

Bearbeiten 13.10.12 - Gelöst von Mark Longair (unten)

Der folgende Code funktionierte für mich im .bash_profile, während andere es nicht taten ...

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

Sie haben die Version von git-completion.bash von master installiert - in gits Entwicklungsgeschichte ist dies nach einem Commit, das die Funktion __git_ps1 von der Vervollständigungsfunktion in eine neue Datei (git-Prompt.sh) aufteilt. Das Commit, das diese Änderung eingeführt hat und die die Gründe dafür erklärt, lautet af31a456 .

Ich würde trotzdem vorschlagen, dass Sie nur die Version von git-completion.bash (oder git-Prompt.sh) beziehen, die mit Ihrer Installation von git mitgeliefert wird.

Wenn Sie diese Funktion jedoch aus irgendeinem Grund weiterhin verwenden möchten, indem Sie separat von master heruntergeladene Skripts verwenden, sollten Sie git-Prompt.sh in ähnlicher Weise herunterladen:

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

... und fügen Sie Ihrem ~/.bash_profile die folgende Zeile hinzu:

source ~/.git-Prompt.sh

Dann sollte Ihre PS1-Variable, die __git_ps1 '%s' enthält, einwandfrei funktionieren.

282
Mark Longair

Nach dem Upgrade auf OSX 10.9 Mavericks musste ich die folgenden Dateien referenzieren, um den Abschluss des git Shell-Befehls und git Prompt wieder funktionsfähig zu machen.

Von meinem .bash_profile oder ähnlich:

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

Du solltest

$ brew install bash bash-completion git

Dann geben Sie "$ (brew --prefix)/etc/bash_completion" in Ihre .bashrc ein.

34
Steven Shaw

Folgendes hat für mich wie ein Zauber gearbeitet:

Führen Sie folgendes in Ihrem Terminal aus:

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

Bash_profile öffnen/erstellen:

$ vi ~/.bash_profile

Fügen Sie der Datei Folgendes hinzu:

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"

Zum Schluss beschriften Sie es mit:

$ source ~/.bash_profile

Dies löst das Problem von bash: __git_ps1: command not found.

Ihre Eingabeaufforderung ändert sich auch in "os". Um "os" in etwas anderes zu ändern, ändern Sie die Zeichenfolge "os" in der PS1-Exportzeile. 

12
Undefined

Lösung für MacOS Sierra und git Version 2.10.1 <2017-2-06>

Schritt 1: Installieren Sie den Git

Sie können diesen Schritt überspringen, wenn Sie bereits das neueste Git installiert haben.

Laden Sie das git-Paket über den Browser herunter https://git-scm.com/download/

Hinweis: Wenn Sie mit der curl [option] https://...-Option zum Herunterladen installieren, müssen Sie sicherstellen, dass Ihr System SSL unterstützt. Für Neuankömmlinge ist das Herunterladen vom Browser und die direkte Installation von git installer viel einfacher.

  • Zeigen Sie, wo sich Ihr Git-Verzeichnis befindet: which git 
  • Zeigen Sie an, welche Version Sie derzeit verwenden: git --version Die aktuelle Version sollte 2.10.1 sein. 

Schritt 2: Fügen Sie Ihr Git-Profil Ihrer Shell hinzu

  1. Öffnen Sie Ihr Shell-Profil:
    • nano ~/.bash_profile oder nano ~/.bashrc Abhängig davon, wo sich Ihre Änderung befindet.
  2. Fügen Sie der Datei den folgenden Code hinzu:
    • source /usr/local/git/contrib/completion/git-completion.bash
    • source /usr/local/git/contrib/completion/git-Prompt.sh

Hinweis: Das Installationsverzeichnis von git wurde nach dem OSX-Upgrade auf El Capitain von opt/verzeichnis in usr/local/geändert. Aus diesem Grund funktionieren einige der obigen Antworten in MacOS Sierra nicht mehr.

  1. Fügen Sie der PS1-Konfiguration den folgenden Code hinzu: 

    • Option 1: direkt zu deiner PS1 hinzufügen: export PS1='\w$(__git_ps1 "(%s)") > '

      Ich bevorzuge diesen einfachen Ansatz, da ich bereits weiß, dass .git-completion.bash in meinem Home-Verzeichnis vorhanden ist, und ich kann ein anderes Prompt-Format im Vordergrund hinzufügen. Hier ist meine persönliche Aufforderung für Ihre Referenz: export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
    • Option 2: Fügen Sie ein Auswahlskript hinzu

    wenn [-f ~/.git-completion.bash]; dann
     export PS1 = '\ w $ (__ git_ps1 "(% s)")>' 
     fi
  2. Speichern und verwenden Sie das Profil: source ~/.bash_profile oder source ~/.bashrc

7
frzhen

Ich hatte das gleiche Problem beim Upgrade auf Yosemite.

Ich musste nur ~/.bashrc in source /usr/local/etc/bash_completion.d/git-Prompt.sh anstelle des alten Pfads ändern.

quellen Sie dann Ihren . ~/.bashrc neu, um den Effekt zu erhalten.

5
chovy

__git_ps1 für bash ist jetzt in git-Prompt.sh in /usr/local/etc/bash_completion.d auf meiner Brew-installierten Git-Version 1.8.1.5 zu finden

4
traday

High Sierra saubere Lösung mit Farben!

Keine Downloads Kein Gebräu Kein Xcode

Fügen Sie es einfach zu Ihrem ~/.bashrc oder ~/.bash_profile hinzu

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

Wenn Sie mit Homebrew ein Upgrade für Git durchführen möchten und Ihr System generell veraltet werden lassen (wie ich es tat), müssen Sie möglicherweise zuerst Homebrew selbst auf den neuesten Stand bringen (wie in Brüh-Update: Die folgenden untracked Working Tree-Dateien würden durch Zusammenführen überschrieben: thanks @ chris-frisina)

Bringen Sie zuerst Homebrew mit der aktuellen Version in Einklang

cd/usr/local
git holen Origin ab
git reset --hard Origin/Master

Dann Update Git:

brauen Sie Upgrade-Git

Problem gelöst! ;-)

2

dies funktioniert in OS 10.8 im .bash_profile 

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

Zumindest mit Xcode 6 haben Sie git-completion.bash bereits. Es ist im Xcode-App-Paket enthalten.

Fügen Sie dies einfach zu Ihrem .bashrc hinzu:

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

Für Macports musste ich source /opt/local/share/git-core/git-Prompt.sh zu meinem ./profil hinzufügen

2
velop
  1. Laden Sie die Dateien git-Prompt.sh und git-completion.bash von diesem Git Completion herunter.
  2. Benennen Sie die Dateien um.
  3. Verschieben Sie diese Dateien in Ihr Basisverzeichnis.
  4. Fügen Sie die Quelldatei dem Bash-Profil hinzu

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

Ich weiß, dass es keine echte Antwort ist ...

Ich hatte einige seltsame Probleme mit der Beschaffung von git-Prompt.sh in meinem .bashrc, also fing ich an, nach einer anderen Lösung zu suchen. Dieses: http://www.jqno.nl/post/2012/04/02/wie-Display-der-current-git-branch-in-your-Prompt/ verwendet nicht __git_ps1 und Autor behauptet, dass es auch auf dem Mac funktioniert (im Moment funktioniert es perfekt auf meinem Ubuntu und es ist leicht zu Tweak).

Ich hoffe, es hilft!

1
op1ekun

Ich habe den Kurs zu Udacity für Git Hub gemacht und hatte das gleiche Problem. Hier ist mein endgültiger Code, der dafür sorgt, dass korrekt funktioniert. 

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

Es funktioniert! https://i.stack.imgur.com/d0lvb.jpg

1
superheron

Für git gibt es /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-Prompt.sh. Und bitte auch /etc/bashrc_Apple_Terminal suchen.

Also habe ich diese in ~/.bash_profile eingefügt:

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
0
liudongmiao

Dieser hat für mich funktioniert, und es hat farbige Git-Ausgabe und einen Indikator in der Eingabeaufforderung, ob Dateien geändert wurden/hinzugefügt wurden, richtig eingebettet:

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\]\[email protected]\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '

Achten Sie darauf, den richtigen Pfad zu verwenden! Ich habe Homebrew verwendet, um git zu installieren. Benutze brew list git, um den Pfad zu deiner aktuellen Installation zu erhalten.

Es wäre schön, wenn Sie keinen hart codierten Pfad verwenden, wissen aber nicht, wie Sie den Pfad zur aktuellen Installation erhalten.

Weitere Infos hier: http://de.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-Prompt/

0
Joshua Muheim