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 ich m Tab, damit die automatische Vervollständigung zu master 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äßig git) brew install git und starten Sie das Terminal für diejenigen neu, die auf seltsame Fehler wie git 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 von bash-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 Befehl source ~/.bash_profile
Antwort

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 das if -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, auch source ~/.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 und brew link git (mit aktivierter Überschreibung)
  • Vielen Dank für den Fang @Tope. Ich habe update in upgrade 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

  1. Überprüfen Sie die Version des Git mit dem Befehl git --version
  2. 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 
  3. 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.