Auf meinem Linux-Rechner habe ich Autocomplete für Branches mit Git.
[Beachten Sie, dass wir über die Git-Branch-Vervollständigung sprechen, nicht über die Bash-Vervollständigung (z. B. Befehle, Dateien usw.). Also überhaupt NICHT Lanes Antwort ]
Zum Beispiel kann ich git checkout
+ eingeben TABund bekomme eine Liste von Zweigen.
Oder ich kann git checkout feb*
+ TABeingeben, um alle Zweige zu erhalten, die mit "feb" beginnen.
Wie bekomme ich diese Funktion auf einem Mac?
Ich habe versucht, es herunterzuladen und auszuführen bash-completion/bash_completion
, bash-completion/bash_completion.sh.in
aber keine Freude. Die erste gab Fehlermeldungen über declare: -A invalid_option
. Der zweite gab keine Fehler. Wenn ich git checkout
+ TABerhalte, erhalte ich immer noch eine Liste der Dateien im Verzeichnis, keine Zweige. Ich bin im Projektstamm.
Die automatische Vervollständigung für Verzeichnisse und Bash-Befehle funktioniert einwandfrei, ist also spezifisch für Git.
Ok, also brauchte ich das Git -Autocompletion-Skript.
Ich habe das von dieser URL mit dem folgenden Befehl in der Terminal-App erhalten:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Sie müssen sich keine Gedanken darüber machen, in welchem Verzeichnis Sie sich befinden, wenn Sie dies ausführen, da Ihr Home-Verzeichnis ( ~
) mit dem Ziel verwendet wird.
Dann habe ich meiner ~/.bash_profile
Datei den folgenden Code "Ausführen, falls vorhanden" hinzugefügt:
if [ -f ~/.git-completion.bash ]; then
. ~/.git-completion.bash
fi
Update: Ich mache diese Code-Bits prägnanter, um meine Datei zu verkleinern .bashrc
, in diesem Fall verwende ich jetzt:
test -f ~/.git-completion.bash && . $_
Hinweis: $_
bedeutet das letzte Argument des vorherigen Befehls. so . $_
bedeutet es ausführen - "es" ist .git-completion.bash
in diesem Fall
Dies funktioniert immer noch sowohl unter Ubuntu als auch unter OSX und auf Computern ohne das Skriptskript .git-completion.bash
.
Jetzt git
Tab(eigentlich ist es git
TabTab) funktioniert wie ein Zauber!
ps: Wenn dies nicht auf Anhieb funktioniert, müssen Sie möglicherweise rennen chmod u+x ~/.git-completion.bash
, um sich die erforderliche Erlaubnis zu erteilen:
chmod
ist der Befehl, der Dateiberechtigungen ändertu
bedeutet der Benutzer, dem die Datei gehört, standardmäßig ihr Ersteller, dh Sie+
bedeutet eine Berechtigung setzen/aktivieren/hinzufügenx
bedeutet Ausführungserlaubnis, dh die Fähigkeit, das Skript auszuführenModels
Ordner automatisch zu vervollständigen, als ich drückte m
Tab
, um es automatisch zu vervollständigen master
.source ~/.bash_profile
nachdem Sie den Code eingefügt haben. Ein Neustart des Terminals bewirkt ebenfalls dasselbe.git
, sondern Apple-Standard git
) brew install git
und starten Sie das Terminal neu, wenn Sie mit seltsamen Fehlern wie zgit 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>]
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
nochmal Danke sagen musste :)git-completion.bash
ist veraltet: MacOS-Benutzer sollten stattdessen den zsh-Completion-Wrapper für Git git-completion.zsh
verwenden: github.com/git/git/blob/master/contrib/completion/…Einige Leute ziehen es vor, einen Paketmanager zu verwenden, um die Installation, Aktualisierung und Konfiguration von Mac OS-Paketen zu automatisieren. Ich bin ein Fan von Paketmanagern und denke, dass Homebrew der beste Paketmanager für Mac OS ist (manche würden sagen, es ist der De-facto-Paketmanager für Mac OS).
Sobald Sie Homebrew installiert haben, können Sie einfach git zusammen mit bash-completion with installieren brew install git bash-completion
.
Sie müssen dann Folgendes in Ihre einfügen ~/.bash_profile
:
if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
. `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi
(Hinweis: Wenn diese Installation mit einem 404-Fehler fehlschlägt und Sie bereits Git installiert haben, entfernen Sie einfach den Git-Teil dieser Brew-Installation.)
Weitere Informationen zur Installation von Git und Bash-Completion mit Brew finden Sie hier.
git
und Hinzufügen bash-completion
ist nicht dasselbe wie Hinzufügen .git-completion.bash
. Sie sind unterschiedliche Programme und sie machen ganz unterschiedliche Dinge - das eine macht die automatische Vervollständigung von Bash-Befehlen und das andere die automatische Vervollständigung von Git-Befehlen und 'nair die beiden werden sich treffen;)~/.bash_profile
?~/.bash_profile
sollen, für mich in der Ausgabe von Homebrew angegeben wurden. Ich habe diese anstelle der obigen Zeilen verwendet. Dann müssen Sie das Bash-Profil in jedem Terminalfenster, in dem Sie die automatische Vervollständigung verwenden möchten, mit dem Befehl neu ladensource ~/.bash_profile
Führen Sie dies auf dem Terminal aus:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Dann tun Sie dies:
vi ~/.bash_profile
Fügen Sie diese Zeilen hinzu:
if [ -f ~/.git-completion.bash ]; then
. ~/.git-completion.bash
fi
Das ist alles. Das hat bei mir funktioniert.
~/.bash_profile
Datei nicht. Das ist in Ordnung, erstellen Sie einfach die Datei und platzieren Sie das if
Skript dort und speichern Sie es. Laden Sie Ihre Shell danach neu und es wird funktionieren.git
und git-completion.bash
sind bereits mit macOS-Befehlszeilentools ( xcode-select --install
) ausgestattet. Um die automatische Vervollständigung von Bash zu aktivieren, fügen Sie dies zu Ihrer ~/.bash_profile
.
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] \
&& . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
Dadurch wird auch die automatische Vervollständigung für Git-Zweige aktiviert.
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
haben, vergessen Sie nicht, sie auch auszuführen source ~/.bash_profile
(insbesondere, wenn Sie die ~/.bash_profile
Datei zum ersten Mal erstellen)
.xcode-select --install
von Terminal.app und starten Sie neu, wenn Sie fertig sind.macOs wurde von bash auf zsh als Standard-Shell geändert, beginnend mit Catalina.
Sie benötigen also spezielle Autocomplete-Skripte für zsh.
So installieren Sie sie mit Homebrew:
brew install zsh-completion
Die ZSH-Vervollständigung von Brew enthält tatsächlich die Git-Vervollständigung.
Um die automatische Vervollständigung zu aktivieren, müssen Sie Ihrer ~/.zshrc
. Möglicherweise müssen Sie diese Datei in Ihrem Benutzerordner erstellen, falls sie noch nicht vorhanden ist. Hinweis: Die Ausgabe des obigen Installationsskripts sagt Ihnen genau, welcher Code hinzugefügt werden muss. Lesen Sie ihn also sorgfältig durch und kopieren Sie ihn von dort, falls er aktualisiert wurde, seit ich hier geschrieben habe.
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
autoload -Uz compinit
compinit
fi
Wichtig: Lesen Sie
nach Abschluss der Installation die Ausgabe des Installationsskripts. Es wird Sie nicht nur anweisen, Code zu .zshrc hinzuzufügen, sondern Ihnen auch Ratschläge zu zusätzlichen Aktionen geben, die möglicherweise erforderlich sind, wie z. B. das Erzwingen der Neuerstellung von zcompdump. Aber höchstwahrscheinlich werden Sie die zusätzlichen Schritte nicht benötigen.
zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?
Aber es funktioniert!git
-Pakets, nicht zsh-completions
(das unter anderem Vervollständigungen für Git-Erweiterungen wie Git Flow enthält ). Also, brew install git
, was Ihnen mitteilt, dass Vervollständigungen installiert werden, und folgen Sie dann dem Shell Completion Guide von Homebrew .Hier ist, was einige von Ihnen verwirrt: Sie haben brew oder ports installiert, aber Sie verwenden das System git in /usr/bin/
. Um dies zu überprüfen:
which git
Wenn Sie sehen , dass /usr/bin/git
brew entweder nicht richtig konfiguriert ist oder Sie git nicht über brew installiert haben.
Wenn Sie git über brew installieren, aktiviert die Aktivierung von Bash-Vervollständigungen für brew auch Bash-Vervollständigungen für git. Dies liegt daran , dass /usr/local/etc/bash_completion
eigentlich alles in /usr/local/bash_completion.d
, und das brew-Paket für git ein Git-Vervollständigungsskript dort installiert.
Sie könnten bash und git von MacPorts mit aktivierter Option „bash_completion“ installieren. Es ist wahrscheinlich der einfachste Weg, sowohl Git als auch die Vervollständigungen auf dem neuesten Stand zu halten.
http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard
So installieren Sie MacPorts: http://www.macports.org/install.php/
zusätzliche Information
Um die Vervollständigungseinstellungen auf Ihrem Linux-System zu finden, werfen Sie einen Blick in /etc/bash_completion.d/git (es ist eine lange Datei). Das alleinige Kopieren wird jedoch wahrscheinlich nicht funktionieren, da es so konzipiert ist, dass es vom Vervollständigungs-Framework über /etc/bash_completion bezogen wird (das aus /etc/profile.d/bash_completion.sh; Dateien in /etc/profile .d stammen aus /etc/profile).
Für macOS Catalina+ unter zsh
:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.git-completion.zsh
Aktualisieren Sie dann Ihre ~/.zshrc
mit:
if [ -f ~/.git-completion.zsh ]; then
. ~/.git-completion.zsh
fi
c:8: command not found: __git_aliased_command
wenn ich versuche, automatisch zu vervollständigen ...Wenn Ihre Git-Vervollständigung auch nach dem Sourcing teilweise fehlerhaft ist https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
, müssen Sie möglicherweise nur Ihre Git-Version aktualisieren.
Wenn ich zum Beispiel git check
+ eingetippt habe TAB
, wurde es korrekt automatisch vervollständigt git checkout
. git checkout
Aber als ich + eingegeben TAB
habe, wurde nicht die Liste der Zweige angezeigt, sondern nur HEAD
.
Die Lösung für mich war, meine git
Version zu aktualisieren. Ich war auf 2.7.0, das anscheinend nicht mit dem neuesten kompatibel war git-completion.bash
. Ich habe brew upgrade git
ausgeführt, wodurch es auf 2.13.0 aktualisiert wurde, und jetzt werden meine Zweignamen ordnungsgemäß automatisch vervollständigt.
brew upgrade git
und brew link git
(mit aktiviertem Override)update
zu geändert upgrade
.Die bei weitem beste Referenz, die ich gefunden habe, um genau dieses Problem zu lösen, ist SpinDance von Connor Livingston :
Wenn das Skript git-completion.bash auf Ihrem Computer nicht vorhanden ist, rufen Sie es bitte über den Link ab, den ich oben angegeben habe (dies ist dieser ), und speichern Sie es auf Ihrem lokalen Computer in einer neuen Datei namens git-completion.bash im Verzeichnis / usr/local/etc/bash_completion.d/ Verzeichnis. Wenn das Skript git-completion.bash auf Ihrem Computer vorhanden ist, sich aber nicht im Verzeichnis /usr/local/etc/bash_completion.d/ befindet, sollten wir eine Kopie davon in diesem Verzeichnis erstellen. Ein schnelles sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash sollte ausreichen. Für diejenigen, die neugierig auf /usr/local/etc/bash_completion.d/ sindVerzeichnis: Es dient zum Speichern neuer Vervollständigungsbefehle und Sie müssen es möglicherweise erstellen, wenn es noch nicht auf Ihrem Computer vorhanden ist.
An diesem Punkt sollte das Skript git-completion.bash auf Ihrem lokalen Rechner im Verzeichnis /usr/local/etc/bash_completion.d/ vorhanden sein . Jetzt fügen wir das Git-Completion-Skript in Bash ein, indem wir von ~/.bash_profile darauf verweisen .
Hinweis: Die Tilde im vorherigen Satz bezieht sich auf das Home-Verzeichnis auf Ihrem Computer. Fügen Sie die folgende Zeile zu ~/.bash_profile hinzu : source /usr/local/etc/bash_completion.d/git-completion.bash und speichern Sie. Der letzte Schritt besteht darin, Ihr Bash-Profil neu zu laden. Sie können dies erreichen, indem Sie source ~/.bash_profile in Ihrer aktuellen Bash-Sitzung ausführen.
Ich habe es versucht und es funktioniert gut für Zweige, aber wenn Sie dies tun git st
, tab
wird der Fehler wie folgt angezeigt
unbekannte Option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config Verwendung: git [--version] [--help] [-C ] [-c =] [--exec -path[=]] [--html-path] [--man-path] [--info-path] [-p | --paginieren | --no-pager] [--no-replace-objects] [--bare] [--git-dir=] [--work-tree=] [--namespace=] []
Durchsuchte das Internet und stellte fest, dass --list-cmds
in .git-completion.bash
der neuesten Version des Git und auf meinem Mac die Git-Version war2.17.2
git --version
BefehlGeben Sie dann die gleiche Versionsnummer in die URL ein wie ich
curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Befolgen Sie dann die gleichen Schritte wie in der oberen Antwort und geben Sie den folgenden Code ein~/.bash_profile
if [ -f ~/.git-completion.bash ]; then
. ~/.git-completion.bash
fi
Sie sollten versuchen, die Git-Version auf die neueste Version zu aktualisieren, dann sollte es funktionieren.
Installieren Sie oh-my-zsh und legen Sie zsh als Ihre Standard-Shell fest und danken Sie mir später :)
Die meisten Benutzer werden git
als Teil der xcode-Befehlszeilentools unter installiert haben /usr/bin/git
und Bash-Vervollständigungsregeln für Git werden unter verfügbar sein /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
.
In diesem Fall ist es nicht erforderlich, Git von Homebrew zu installieren oder Git-Vervollständigungsregeln von raw.githubusercontent.com zu beziehen. Erstellen Sie einfach einen Symlink wie folgt:
cd /usr/local/etc/bash_completion.d/
ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git
bash-completion
Hinweis: Stellen Sie sicher, dass Sie das Paket von Homebrew installiert und konfiguriert haben .
Wenn Sie bereit sind, zu einer anderen Shell zu wechseln, hat die fish
Shell diese Funktion eingebaut. Sie hat auch einige andere praktische Funktionen wie die automatische Vervollständigung während der Eingabe.
Suchen Sie Ihre .bashrc
Datei.
Öffnen Sie es und fügen Sie diese Zeile unten hinzu:
source /etc/bash_completion.d/git
/etc/bash_completion.d/
auf einem relativ neuen System (OSX 10.10.3) keinen Ordner./etc/bash_completion.d/git
? Es würde Ihre Antwort wertvoller machen.brew install git bash-completion
wie unter apple.stackexchange.com/a/92637/136365 erklärt , erhalten Sie diese Dateien, wenn auch an einem anderen Ort
Michael Weiss
Dummkopf
JillAndMe
echo 'autoload -Uz compinit && compinit' >> ~/.zshrc && . ~/.zshrc
link