Wie konfiguriere ich die Vervollständigung der Git Bash-Befehlszeile?

129

ZB auf einer frischen Ubuntu-Maschine bin ich gerade gelaufen sudo apt-get git, und es gibt keine Fertigstellung beim Tippen, z git check[tab].

Ich habe auf http://git-scm.com/docs nichts gefunden , aber die IIRC-Fertigstellung ist heutzutage im Git-Paket enthalten und ich brauche nur den richtigen Eintrag in meinem Bashrc.

Vincent Scheib
quelle
Funktioniert für mich sofort unter Ubuntu Precise (und Fedora 17).
Mechanische Schnecke
2
Um zu überprüfen, ob Sie es standardmäßig haben oder nicht, können Sie ausführen (cd ~ && exec cat .bashrc | grep completion).
Aderchox

Antworten:

181

Unter Linux

Bei den meisten Distributionen wird das Git-Abschlussskript in /etc/bash_completion.d/(oder /usr/share/bash-completion/completions/git) installiert, wenn Sie git installieren. Sie müssen nicht zu github wechseln. Sie müssen es nur verwenden - fügen Sie diese Zeile zu Ihrem hinzu .bashrc:

source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git

In einigen Versionen von Ubuntu ist die automatische Vervollständigung von Git möglicherweise standardmäßig fehlerhaft. Eine Neuinstallation durch Ausführen dieses Befehls sollte Folgendes beheben:

sudo apt-get install git-core bash-completion

Auf dem Mac

Sie können die Git-Vervollständigung mit Homebrew oder MacPorts installieren.

Homebrew

if $BASH_VERSION> 4: brew install bash-completion@2(aktualisierte Version) Achten Sie besonders darauf, welche Bash-Version Sie als MacOS-Standardversion mit 3.2.57 (1) -Version haben.

hinzufügen zu .bash_profile:

  if [ -f /usr/local/share/bash-completion/bash_completion ]; then
    . /usr/local/share/bash-completion/bash_completion
  fi

Für ältere Versionen von Bash: brew install bash-completion

hinzufügen zu .bash_profile:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

MacPorts

sudo port install git +bash_completion

Fügen Sie dies dann zu Ihrem hinzu .bash_profile:

if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
fi

Weitere Informationen in diesem Handbuch: Installieren Sie die Vervollständigung von Bash Git

Beachten Sie, dass Sie in allen Fällen eine neue Shell erstellen müssen (öffnen Sie eine neue Terminalregisterkarte / ein neues Fenster), damit die Änderungen wirksam werden.

Sergey Evstifeev
quelle
1
Die meisten * nix-Boxen (insbesondere Ubuntu) haben diese Datei bereits, daher wurde mein Problem behoben, indem ich sie nur meinem Benutzer zur Verfügung stellte. Vielen Dank.
Nevvermind
5
Ubuntu kann es als /etc/bash_completion.d/git-prompt
Catskul
2
Ich habe Git aber nicht /etc/bash_completion.d
sixty4bit
13
In meinem Ubuntu 14.04 ist diese Datei /usr/share/bash-completion/completions/git. /etc/bash_completion.d/git-promptwird für die Unterstützung von Git-Eingabeaufforderungen verwendet, nicht für die Fertigstellung.
Ray Chen
18
WARNUNG: Der Mac Homebrew - Methode funktioniert nur , wenn Sie git installiert durch Homebrew tun brew uninstall bash-completiondann , brew install gitwenn Sie git , bevor sie durch ein anderes Verfahren installiert hatte, dann die obigen Schritte funktionieren.
Patapouf_ai
66

Ich hatte das gleiche Problem, folgte den folgenden Schritten:

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

Fügen Sie dann die folgenden Zeilen zu Ihrem hinzu .bash_profile(im Allgemeinen unter Ihrem Home-Ordner).

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

Quelle: http://code-worrier.com/blog/autocomplete-git/

jospratik
quelle
Ich war hinter einem Proxy, also musste ich zuerst den Proxy einstellen, damit die Locke funktioniert. export https_proxy=proxy_ip:proxy_portIch verstehe nicht wirklich, warum er die Einstellungen nicht vom System erhält.
Madlymad
2
Es ist nicht wirklich erforderlich, diese Datei durch einen Punkt vor ihrem Namen zu verbergen. Auch: vorsichtig mit Git-Versionen (siehe die Antwort von Wisbucky)
Walter Tross
42

Die meisten Anweisungen, die Sie sehen, werden Sie zum Herunterladen auffordern

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

und Quelle, die in Ihrem Bash-Startskript wie .bashrc.

Aber es gibt ein Problem damit, weil es auf den masterZweig verweist , der die neueste Version von ist git-completion.bash. Das Problem ist, dass es manchmal kaputt geht, weil es nicht mit der von Ihnen installierten Version von git kompatibel ist.

Tatsächlich wird dies im Moment nicht funktionieren, da der masterZweig git-completion.bashüber neue Funktionen verfügt, für die Git v2.18 erforderlich ist, auf die noch keiner der Paketmanager und Installer aktualisiert hat. Sie erhalten eine Fehlermeldungunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

Die sicherste Lösung besteht also darin, auf die Version / das Tag zu verweisen, die dem von Ihnen installierten Git entspricht. Beispielsweise:

https://raw.githubusercontent.com/git/git/v2.17.1/contrib/completion/git-completion.bash

Beachten Sie, dass es v2.17.in der URL ein anstelle von hat master. Und dann stellen Sie sicher, dass Sie dies im Bash-Startskript angeben.

wisbucky
quelle
Dies ist die beste MacOS-Antwort.
AShelly
Wow ... Nach ungefähr einer Stunde, in der ich mein Gehirn darüber verprügelt habe, war Ihr Kommentar der Schlüssel. Danke für diese Lösung! Golden!
Myke Carter
4
Die Version /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bashder MacOS-Version sollte sich hier bereits auf der Festplatte befinden: Aus Sicherheitsgründen habe ich sie mit der Version 2.17.1 auf Github unterschieden und sie stimmt überein.
15.
18

Ubuntu 14.10

Installieren Sie git-coreundbash-completion

sudo apt-get install -y git-core bash-completion
  • Für die aktuelle Sitzungsnutzung

    source /usr/share/bash-completion/completions/git
  • Damit es für alle Sitzungen immer eingeschaltet ist

    echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc
Andrzej Rehmann
quelle
1
Vielen Dank, das hat bei Ubuntu 16.04 LTS für mich funktioniert :)
Mrunal Pagnis
5

Tun Sie dies einfach in Ihrem ~/.bashrc:

source /usr/share/bash-completion/completions/git

Andere Antworten fordern Sie auf, die Installation durchzuführen bash-completion. Sie müssen dies nicht tun. Wenn Sie dies jedoch tun, müssen Sie die Fertigstellung nicht direkt beziehen . Du machst das eine oder andere, nicht beides.

Eine allgemeinere Lösung besteht darin, den Systemstandort abzufragen, wie vom Bash-Completion-Projekt empfohlen:

source "$(pkg-config --variable=completionsdir bash-completion)"/git
FelipeC
quelle
1
Ihre generische Lösung hat unter Ubuntu 18.04 perfekt für mich funktioniert. Zum Booten ist Ihre Methode äußerst präzise - danke!
Jason R Stevens CFA
4

Auf meinem Ubuntu ist hier eine Datei installiert:

source /etc/bash_completion.d/git-prompt

Sie können den Links in den /usr/lib/git-coreOrdner folgen . Dort finden Sie eine Anleitung zum Einrichten oder Verwenden von PS1__git_ps1

kisp
quelle
3

Kann für jemanden hilfreich sein: -

Nach dem Herunterladen der Datei .git-vervollständigung.bash über den folgenden Link

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

Beim Versuch, die Funktion __git_ps1 zu verwenden, wurde der Fehler as-- angezeigt

 -bash: __git_ps1: command not found

Anscheinend müssen wir Skripte separat vom Master herunterladen, damit dieser Befehl funktioniert, da __git_ps1 in git-prompt.sh definiert ist. Holen Sie sich also ähnlich wie beim Herunterladen von .git-vervollständigung.bash die Datei git-prompt.sh:

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

und fügen Sie dann Folgendes in Ihr .bash_profile ein

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

source ~ / .bash.git führt die heruntergeladene Datei aus und

export PS1='\W$(__git_ps1 "[%s]") Der Befehl hängt den Namen des Checkout-Zweigs nach dem aktuellen Arbeitsverzeichnis an (falls es sich um ein Git-Repository handelt).

So wird es aussehen: -

dir_Name[branch_name] Dabei ist dir_Name der Name des Arbeitsverzeichnisses und branch_name der Name des Zweigs, an dem Sie gerade arbeiten.

Bitte beachten Sie, dass bei __git_ps1 zwischen Groß- und Kleinschreibung unterschieden wird.

Nicks
quelle
1

Arch Linux

Quelle /usr/share/git/completion/git-completion.bashin einer der Bash-Startdateien.

Beispielsweise:

# ~/.bashrc

source /usr/share/git/completion/git-completion.bash

Möglicherweise finden Sie das Skript an anderen Orten wie, /usr/share/bash-completion/completions/gitaber diese Skripte haben bei mir nicht funktioniert.

rauben
quelle
-1

Ubuntu

Es gibt eine schöne Antwort hier . Arbeitete für mich unter Ubuntu 16.04

Windows

Git Bash ist das Tool, mit dem die automatische Vervollständigung ermöglicht wird. Sie sind sich nicht sicher, ob dies Teil der Standarddistribution ist, daher finden Sie diesen Link auch nützlich. Übrigens erlaubt Git Bash die Verwendung von Linux-Shell-Befehlen , um unter Windows zu arbeiten. Dies ist eine großartige Sache für Leute, die Erfahrung in der GNU / Linux-Umgebung haben.

andrgolubev
quelle
-1

Auf Github im Git-Projekt stellen sie eine Bash-Datei zum automatischen Vervollständigen von Git-Befehlen bereit.

Sie sollten es in das Home-Verzeichnis herunterladen und bash zwingen, es auszuführen. Es sind einfach zwei Schritte und werden im folgenden Blog-Beitrag (Schritt für Schritt) perfekt erklärt.

Code-Worrier-Blog: Autocomplete-Git /

Ich habe es auf einem Mac getestet, es sollte auch auf anderen Systemen funktionieren. Sie können den gleichen Ansatz auf andere Betriebssysteme anwenden.

Wasabi
quelle