Die automatische Git-Vervollständigung funktioniert nicht unter Mac OSX 10.11.5 El Capitan

Ich habe die hier gefundenen Beispiele ausprobiert , um die automatische Git-Vervollständigung auf El Capitan zum Laufen zu bringen, aber keines der Beispiele funktioniert für mich.

Ich habe bash-completionmit Homebrew ( brew install bash-completion) installiert.

Dies ist meine ~/.bash_profileaktuelle (wie Sie sehen können, habe ich ein paar Dinge ausprobiert):

CRMPiccosMacBook:etc crmpicco$ cat ~/.bash_profile 
alias ll='ls -lG'
alias composer="php /usr/local/bin/composer.phar"

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

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
    . `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi

#source /usr/local/git/contrib/completion/git-completion.bash
#GIT_PS1_SHOWDIRTYSTATE=true
#export PS1='[\u@mbp \w$(__git_ps1)]\$ '

Wenn ich also mit dem geklonten Git-Repo in mein Verzeichnis gehe und tippe und git checkout m[TAB] drücke, bekomme ich nichts (wenn ich erwarte master, dass es vorab ausgefüllt wird).

Wenn ich ein sourcedarauf starte, existiert es nicht - es ist jedoch installiert.

CRMPiccos-MacBook:signup crmpicco$ brew install bash-completion
Warning: bash-completion-1.3_1 already installed
CRMPiccos-MacBook:signup crmpicco$ source /etc/bash_completion.d/git-completion.bash
-bash: /etc/bash_completion.d/git-completion.bash: No such file or directory
Die Antwort von Tony Williams hier sieht solide aus und das hat früher für mich auf meinem Mac funktioniert, glaube ich. Ich bin mir nicht sicher, wann oder warum es auf meinem Mac nicht mehr funktionierte, und jetzt hat Tonys Rat es auch nicht für mich behoben. Der Rat von Michael Durrant hier tat es jedoch!

Antworten (6)

Sie verwechseln die grundlegende Bash-Vervollständigung mit dem Add-On, das zum Vervollständigen von Git-Befehlen erforderlich ist.

Dem git, das von Apple installiert wird, fehlt die erforderliche git-completion.bashDatei, sodass Sie das vollständige Git installieren müssen. Sie können dies einfach mit Homebrew tun - brew install gitwird die Arbeit erledigen.

Sobald Sie das getan haben, kommentieren Sie Ihre drei obersten Zeilen aus: -

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

Jetzt source ~/.bash_profileund es sollte gut funktionieren.

Ich habe genau das getan, was du gesagt hast, Tony, aber es funktioniert immer noch nicht
Die Schritte, die Sie benötigen, sind: - (1) Installieren Sie bash-completionmit Homebrew (2) Installieren Sie gitmit Homebrew. (3) fügen Sie die obigen Zeilen zu Ihrer hinzu .bash_profile. Öffnen Sie nun ein neues Terminalfenster und Sie sollten feststellen, dass die Git-Vervollständigung funktioniert.
Die Installation von git mit brew install githat mein Problem gelöst. Danke @TonyWilliams
Ich habe festgestellt, dass bei Homebrew git version 2.15.0der Pfad des Bash-Vervollständigungsskripts etwas anders ist`brew --prefix`/git/contrib/completion/git-completion.bash
In meinem Fall, git version: 2.18.0, war die Datei in$(brew --prefix)/etc/bash_completion.d/git-completion.bash
Ich musste brew install installieren git bash-completionund dann if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fizu bash_profile hinzufügen.

Als Hinweis für Benutzer wie mich, die bereits auf macOS Catalina aktualisiert haben, das veraltet bashist, aber bei dieser Antwort als Top-Ergebnis gelandet ist ...

Für macOS Catalina+, das verwendet zsh, gibt es einige andere Anforderungen. Laden Sie beide Skripte herunter:

curl -o git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
curl -o _git https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh

Aktualisieren Sie dann Ihre ~/.zshrcmit:

zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.bash
fpath=(~/.zsh $fpath)

autoload -Uz compinit && compinit
Ich bin mir nicht ganz sicher, warum dies abgelehnt wurde, wenn es sowohl korrekt als auch relevant für Catalina ist, das verwendet zsh.
Wo sollen diese Dateien gespeichert werden?
Der Titel dieser Frage bezieht sich auf Catalina, aber ein aufmerksamer Leser wird feststellen, dass sich das Detail in der Frage auf bezieht bash. Daher zshverfehlt eine Antwort den Punkt der Frage.
Wenn not found: __git_aliased_commandSie versuchen, den Namen des Zweigs automatisch zu vervollständigen: / Grundlegende Befehle werden automatisch vervollständigt, z. B. für checkoutfunktioniert jedoch.

Aktivieren Sie Git Tab Autocomplete für Zsh

Neue Macs verwenden standardmäßig die Zsh-Shell. Wenn Sie Zsh verwenden, fügen Sie die folgende Zeile zur Datei ~/.zshrc hinzu und starten Sie Ihre Terminal-Anwendung neu:

autoload -Uz compinit && compinit

Alternativ können Sie die folgenden beiden Befehle in Ihrer Terminalanwendung ausführen, um die erforderliche Zeile zur .zshrc-Datei hinzuzufügen und Ihre Shell neu zu starten.

echo 'autoload -Uz compinit && compinit' >> ~/.zshrc
source ~/.zshrc

Die automatische Vervollständigung des Git-Tabs ist jetzt auf Ihrem Mac aktiviert.

Dies löste mein Problem. Danke sehr :)

Mit Hilfe dieser Antwort habe ich es mit diesen Befehlen gelöst

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

Dann habe ich die Datei durch Ausführen bearbeitet vi ~/.zshrcund den folgenden Teil hinzugefügt

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

Dann habe ich ausgeführt, source ~/.zshrcdann begannen die Git-Vorschläge richtig zu funktionieren.

Der Titel dieser Frage bezieht sich auf Catalina, aber ein aufmerksamer Leser wird feststellen, dass sich das Detail in der Frage auf bash bezieht. Daher verfehlt eine zsh-Antwort den Punkt der Frage.
Das führt zuERROR: this script is obsolete, please see git-completion.zsh

Für Benutzer von bash 5 können Sie das Homebrew-Paket installieren bash-completion@2und Folgendes zu Ihrer ~/.bash_profile.

[[ -r "$(brew --prefix)/etc/profile.d/bash_completion.sh" ]] && . "$(brew --prefix)/etc/profile.d/bash_completion.sh"
Wie verbessert sich dies bei der Antwort apple.stackexchange.com/a/245324/237
Die Syntax für die Konfiguration mit der neueren Bash-Vervollständigung unterscheidet sich von der anderen Antwort.

Hier ist, was bei Sierra für mich funktioniert hat. Hier gefunden .

Nach der Installation bash-completionund dem Hinzufügen des Snippets zu Ihrem .bash_profile:

cd /usr/local/etc/bash_completion.d  
ln -s /Applications/Docker.app/Contents/Resources/etc/docker.bash-completion  
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.bash-completion  
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.bash-completion