Auf meinem Linux-Computer habe ich für Zweige mit Git automatisch vervollständigt.
[Hinweis, über den wir sprechen Abschluss des Git-Zweigs, nicht Bash-Abschluss (z. B. Befehle, Dateien usw.). Also NICHT Lanes Antwort überhaupt]
Zum Beispiel kann ich git checkout
+ eingeben TAB und eine Liste der Zweige abrufen.
Oder ich kann git checkout feb*
+ TAB eingeben, um alle zu erhalten Zweige, die mit „feb“ beginnen.
Wie kann ich diese Funktionalität auf einem Mac erhalten?
Ich habe versucht, bash-completion/bash_completion
und herunterzuladen und auszuführen bash-completion/bash_completion.sh.in
aber keine Freude. Der erste gab Fehlermeldungen über declare: -A invalid_option
. Der zweite gab keine Fehler. Wenn ich git checkout
+ TAB obwohl ich immer noch eine Liste der Dateien im Verzeichnis erhalte, keine Verzweigungen. Ich bin im Projektstamm.
Automatische Vervollständigung für Verzeichnisse und Bash-Befehle funktionieren einwandfrei, daher ist es spezifisch für Git.
Kommentare
- Ich bin gerade dieser Community beigetreten, damit ich ‚ noch nicht antworten kann, aber ich habe gefunden “ oh-my-zsh “ ist super super hilfreich und ich mag die Benutzeroberfläche wirklich: github.com/ohmyzsh/ohmyzsh Dies gilt natürlich für Benutzer von zsh. Ich ‚ gehe davon aus, dass es ‚ nicht für bash funktioniert …
Antwort
OK, also brauchte ich das git Autocompletion-Skript.
Das habe ich von dieser URL 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 als Ihr Ausgangsverzeichnis ausführen (~
) wird mit dem Ziel verwendet.
Dann habe ich meiner ~/.bash_profile
-Datei den folgenden Code“ Ausführen, wenn vorhanden „hinzugefügt:
if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Update: In diesem Fall mache ich diese Codebits präziser, um meine .bashrc
-Datei zu verkleinern Ich verwende jetzt:
test -f ~/.git-completion.bash && . $_
Hinweis: $_
bedeutet das letzte Argument für den vorherigen Befehl. . $_
bedeutet also, es auszuführen – „es“ ist in diesem Fall .git-completion.bash
Dies funktioniert immer noch sowohl unter Ubuntu als auch unter OSX und auf Computern ohne das Skript .git-completion.bash
.
Jetzt git
Tab ( Eigentlich ist es „s git
Tab Tab ) wie ein Zauber!
ps: Wenn dies nicht der Fall ist Wenn Sie nicht sofort arbeiten, müssen Sie möglicherweise chmod u+x ~/.git-completion.bash
ausführen, um sich die erforderliche Berechtigung zu erteilen:
-
chmod
ist der Befehl zum Ändern der Dateiberechtigungen. -
u
bezeichnet den Benutzer, dem die Datei gehört, standardmäßig ihren Ersteller, dh Sie -
+
bedeutet Setzen / Aktivieren / Hinzufügen einer Berechtigung -
x
bedeutet Ausführungsberechtigung, dh die Fähigkeit, die auszuführen Skript
Kommentare
- Ja, der Neustart des Terminals nach dem Hinzufügen des Bash-Skripts hat funktioniert. Ich saß hier und fragte mich, warum immer wieder versucht wurde, meinen Ordner
Models
automatisch zu vervollständigen, als ichm
Tab
, damit die automatische Vervollständigung zumaster
erfolgt. - Siehe auch unix.stackexchange.com/q/ 48862/10043 für einen anderen Tipp
- Wenn die akzeptierte Antwort ‚ für niemanden funktioniert, versuchen Sie Folgendes:
source ~/.bash_profile
nach dem Einfügen des Codes. Wenn Sie das Terminal neu starten, geschieht dasselbe. - Vielen Dank! Ich habe einige andere Dinge ausprobiert, aber nichts hat funktioniert (einschließlich dieser github.com/bobthecow/git-flow-completion/wiki/… ). Ihre Lösung hat wie ein Zauber funktioniert;)
- (Sie ‚ haben nicht
git
gebraut, sondern Apple standardmäßiggit
)brew install git
und starten Sie das Terminal für diejenigen neu, die auf seltsame Fehler wiegit 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>]
stoßen
Antwort
Einige Benutzer bevorzugen die Verwendung eines Paketmanagers, um die Installation, Aktualisierung und Konfiguration von Mac OS-Paketen zu automatisieren. Ich bin ein Fan von Paketmanagern und ich denke, Homebrew ist der beste Paketmanager für Mac OS (einige würden sagen, es ist de facto der Mac OS-Paketmanager).
Sobald Sie Homebrew installiert haben, Sie können einfach git zusammen mit Bash-Vervollständigung mit brew install git bash-completion
.
Anschließend müssen Sie Folgendes in Ihre ~/.bash_profile
einfügen:
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 git bereits installiert haben, entfernen Sie einfach den git-Teil dieser Brühinstallation.)
Weitere Informationen zur Installation von Git und Bash-Vervollständigung mit Brew hier.
Kommentare
- Hinzufügen von
git
und das Hinzufügen vonbash-completion
ist überhaupt nicht dasselbe wie das Hinzufügen von.git-completion.bash
Sie sind verschiedene Programme und sie machen ganz verschiedene Dinge – man macht einen Bash-Befehl Autocompletion und der andere Befehl git Autocompletion und ‚ nair der Twain wird sich treffen;) - arbeiten wie ein Zauber, vielen Dank. Könnten Sie bitte erklären, was das ist Verwendung eines Skripts, das ich in
~/.bash_profile
hinzugefügt habe? - Trotz allem, was andere über diese Antwort gesagt haben, hat es git dazu gebracht, dass die automatische Vervollständigung funktioniert i n Terminal.
- Beachten Sie, dass die Zeilen, die in die
~/.bash_profile
eingefügt werden sollen, in der Ausgabe von Homebrew für mich angegeben wurden. Ich habe diese anstelle der obigen Zeilen verwendet. Anschließend müssen Sie das Bash-Profil in jedem Terminalfenster, in dem Sie die automatische Vervollständigung verwenden möchten, mit dem Befehlsource ~/.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
Führen Sie dann die folgenden Schritte aus:
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.
Kommentare
- (2. Schritt) Wenn jemand das bash_profile lieber mit einem Texteditor öffnen möchte, gehen Sie einfach so vor: open -e .bash_profile
- Unter einem jungfräulichen Mac OS High Sierra existiert die Datei
~/.bash_profile
nicht ‚. Diese ‚ ist in Ordnung, erstellen Sie einfach die Datei und platzieren Sie dasif
-Skript dort und speichern Sie es. Laden Sie Ihre Shell danach neu und es wird funktionieren. - Dies funktionierte für Ich. Anstelle von vi (mit dem ich immer zu kämpfen habe) mache einfach open -e ~ / .bash_profile
- Für den 2. Schritt brauchst du dieser Link
Antwort
git
und git-completion.bash
werden bereits mit macOS-Befehlszeilentools geliefert (xcode-select --install
). Um die automatische Vervollständigung von Bash zu aktivieren, fügen Sie diese zu Ihrer ~/.bash_profile
hinzu.
[ -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.
Kommentare
- Ziemlich sicher, dass ich ‚ Befehlszeilentools installiert habe, aber diese Datei nicht ‚ existiert in meinem Fall nicht. Gerne aber mit dem Brauen (und da mein Idiot auch mit dem Brauen ist, vielleicht auch klüger).
- Danke! IMO, dies sollte die Antwort mit dem grünen Häkchen sein.
- Dies ist die einfachste Lösung und funktioniert für mich.
- Dies hat für mich funktioniert – obwohl ich ein etwas anderes Format verwendet habe .
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
- für mich hat die Antwort funktioniert, aber nach dem Hinzufügen der angegebenen Zeile zu
~/.bash_profile
vergessen Sie nicht, auchsource ~/.bash_profile
(insbesondere, wenn Sie zum ersten Mal die Datei~/.bash_profile
erstellen)
Antwort
Folgendes verwirrt einige von Ihnen: Sie haben Brew oder Ports installiert, aber Sie verwenden einen System-Git in . So überprüfen Sie dies:
which git
Wenn Sie /usr/bin/git
sehen, ist entweder das Gebräu nicht „richtig konfiguriert“ oder Sie “ Haben Sie Git nicht über Brew installiert.
Wenn Sie Git über Brew installieren, werden durch Aktivieren von Bash-Abschlüssen für Brew auch Bash-Abschlüsse für Git aktiviert. Dies liegt daran, dass /usr/local/etc/bash_completion
tatsächlich alles in /usr/local/bash_completion.d
bezieht und das Brew-Paket für git dort ein Git-Vervollständigungsskript installiert.
Kommentare
- Dies ist sinnvoll, aber wie würden Sie “ Bash-Abschlüsse für das Brauen aktivieren „? Sie ‚ vermissen, wie das geht, dies sollte Teil Ihrer Antwort sein.
- Ich habe dies gerade über simplified.guide/macos/bash-completion , aber die automatische Vervollständigung ist einige Sekunden verzögert … ungerade
Antwort
Git-Autovervollständigung auf Catalina und neueren Versionen (mit Homebrew)
MacOs wurden von bash bis zsh als Standard-Shell, beginnend mit Catalina.
Das werden Sie also benötigen spezielle Autocomplete-Skripte für zsh.
So installieren Sie sie mit Homebrew:
brew install zsh-completion
Die zsh-Vervollständigung von Brew beinhaltet tatsächlich die git-Vervollständigung.
Um die automatische Vervollständigung zu aktivieren, müssen Sie Ihrer ~/.zshrc
einen kleinen Codeblock hinzufügen. Möglicherweise müssen Sie diese Datei in Ihrem Benutzerordner erstellen, falls sie noch nicht vorhanden ist. Hinweis: Die Ausgabe des obigen Installationsskripts gibt Ihnen genau an, welchen Code Sie hinzufügen müssen. Lesen Sie diesen Code daher sorgfältig durch und kopieren Sie ihn von dort falls es seit meinem Schreiben hier aktualisiert wurde.
if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi
Wichtig:
Wenn die Installation abgeschlossen ist, liest die Ausgabe des Installationsskripts.
Es Sie werden angewiesen, nicht nur Code zu .zshrc hinzuzufügen, sondern Sie auch über zusätzliche Aktionen zu beraten, die möglicherweise erforderlich sind, z. B. die erzwungene Neuerstellung von zcompdump. Höchstwahrscheinlich benötigen Sie jedoch keine zusätzlichen Schritte.
Kommentare
- Das Terminal zeigt jedes Mal eine nervige Meldung an, wenn es ‚ s geöffnet:
zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?
Aber es funktioniert! - Ich bin gerade dieser Community beigetreten, damit ich ‚ antworte noch nicht, aber ich fand “ oh-my-zsh “ super super hilfreich und ich mag die Benutzeroberfläche wirklich: github.com/ohmyzsh/ohmyzsh Dies gilt natürlich für Benutzer von zsh. Ich ‚ gehe davon aus, dass es ‚ nicht für bash funktioniert …
Antwort
Sie können bash und git von MacPorts mit aktivierter Option „bash_completion“ installieren. Dies ist wahrscheinlich der einfachste Weg, um 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 Informationen
Informationen zum Auffinden der Abschlusseinstellungen auf Ihrem Linux-System finden Sie unter / etc. /bash_completion.d/git (es ist eine lange Datei). Das Kopieren allein funktioniert jedoch wahrscheinlich nicht, da es vom Completion-Framework über / etc / bash_completion (das aus /etc/profile.d/bash_completion.sh bezogen wird; Dateien in / etc / profile) bereitgestellt wird .d stammen aus / etc / profile).
Antwort
Wenn Ihre Git-Vervollständigung teilweise unterbrochen ist, auch nach der Beschaffung https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
, Sie müssen möglicherweise nur Ihre Git-Version aktualisieren.
Wenn ich beispielsweise git check
+ TAB
würde git checkout
korrekt automatisch vervollständigen. Aber wenn ich git checkout
+ TAB
, es wurde nicht die Liste der Zweige angezeigt, sondern nur HEAD
.
Das Update für mich bestand darin, meine git
Version. Ich war auf 2.7.0, die anscheinend nicht mit der neuesten git-completion.bash
kompatibel war. Ich habe brew upgrade git
, das es auf 2.13.0 aktualisiert hat, und jetzt ist es prop Vervollständigt meine Zweigstellennamen automatisch.
Kommentare
- Ich hatte das gleiche Problem, musste aber
brew upgrade git
undbrew link git
(mit aktivierter Überschreibung) - Vielen Dank für den Fang @Tope. Ich habe
update
inupgrade
geändert.
Antwort
Die mit Abstand beste Referenz, die ich gefunden habe, um genau dieses Problem zu lösen, ist SpinDance von Connor Livingston :
Wenn die git- Das Skript complete.bash ist auf Ihrem Computer nicht vorhanden. Rufen Sie es über den oben angegebenen Link ab ( this ) und speichern Sie es auf Ihrem lokalen Computer in einer neuen Datei mit dem Namen git-complete.bash im Verzeichnis /usr/local/etc/bash_completion.d/ . Wenn das Skript git-complete.bash vorhanden ist Auf Ihrem Computer, der sich jedoch nicht im Verzeichnis /usr/local/etc/bash_completion.d/ befindet, sollten wir eine Kopie davon in diesem Verzeichnis erstellen. Eine schnelle sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash sollte den Trick machen. Für diejenigen, die neugierig auf das Verzeichnis /usr/local/etc/bash_completion.d/ sind: Es dient zum Speichern neuer Vervollständigungsbefehle, und Sie müssen es möglicherweise erstellen, wenn es noch nicht auf Ihrem Verzeichnis vorhanden ist Maschine.
Zu diesem Zeitpunkt sollte das Skript git-finish.bash auf Ihrem lokalen Computer im Verzeichnis /usr/local/etc/bash_completion.d/ vorhanden sein. Jetzt fügen wir das Git-Vervollständigungsskript in bash ein, indem wir von ~ / .bash_profile darauf verweisen.
Hinweis: Die Tilde im vorherigen Satz bezieht sich auf das Ausgangsverzeichnis auf Ihrem Computer. Fügen Sie ~ / .bash_profile die folgende Zeile hinzu: source /usr/local/etc/bash_completion.d/git-completion.bash und speichern. Der letzte Schritt ist das Neuladen Ihres Bash-Profils. Sie können dies erreichen, indem Sie source ~ / .bash_profile in Ihrer aktuellen Bash-Sitzung ausführen.
Antwort
Installieren Sie oh-my-zsh und setze zsh als deine Standard-Shell und danke mir später 🙂
Kommentare
- Ich habe das getan, genau in der Hoffnung, es nicht zu haben um damit fertig zu werden – immer noch keine Verzweigungsvorschläge nach dem Drücken der Registerkarte
- Sie benötigen tatsächlich kein oh-my-zsh oder gar kein separates Plugin-System! Die Git-Vervollständigung ist sofort einsatzbereit. Sie müssen sie nur aktivieren.
Antwort
Versuchte es und es funktioniert gut für Zweige, aber wenn Sie git st
+ tab
ausführen, wird der Fehler wie folgt angezeigt:
unbekannte Option: –list-cmds = list-mainporcelain, andere, nohelpers, alias, list-complete, Konfigurationsverwendung: git [–version] [–help] [-C] [-c =] [–exec-path [=]] [–html-path] [–man-path] [–info-path] [-p | –paginieren | –no-pager] [–no-replace-Objekte] [–bare] [–git-dir =] [–work-tree =] [–namespace =] []
Durchsuchte das Internet und stellte fest, dass --list-cmds
in .git-completion.bash
in der neuesten Version von war git und auf meinem Mac war die git-Version 2.17.2
Hier sind die Lösungen
Lösung 1
- Überprüfen Sie die Version des Git mit dem Befehl
git --version
-
Geben Sie dann dieselbe 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 in
~/.bash_profile
ein. p>if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi
Lösung 2
Sie sollten versuchen, die Git-Version auf den neuesten Stand zu bringen, dann sollte es funktionieren.
Antwort
Bei den meisten Benutzern ist git
als Teil der xcode-Befehlszeile installiert Werkzeuge bei /usr/bin/git
und Bash Completio n Regeln für Git sind unter /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
verfügbar.
In diesem Fall ist es nicht erforderlich, Git von Homebrew oder Quell-Git-Abschlussregeln von raw.githubusercontent.com zu installieren. 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
Hinweis: Stellen Sie sicher, dass Sie das bash-completion
-Paket von installiert und konfiguriert haben Homebrew.
Antwort
Für macOS Catalina + in zsh
:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh -o ~/.git-completion.zsh
Aktualisieren Sie anschließend Ihre ~/.zshrc
mit:
if [ -f ~/.git-completion.zsh ]; then . ~/.git-completion.zsh fi
Antwort
Suchen Sie Ihre .bashrc
-Datei.
Öffnen Sie sie und fügen Sie diese hinzu Zeile unten:
source /etc/bash_completion.d/git
Kommentare
- Ich ziehe ‚ Sie haben auf einem relativ neuen System (OSX 10.10.3) keinen
/etc/bash_completion.d/
-Ordner. - Versuchen Sie zu erstellen it.
- Nicht bash_completion, git_completion, die verschiedene Aufgaben ausführt.
- @MichaelDurrant Es funktioniert. Vertrauen Sie mir .;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
- @crmpicco Könnten Sie bitte Anweisungen zum Erstellen von
/etc/bash_completion.d/git
geben? Dies würde Ihre Antwort wertvoller machen.