Op mijn Linux-machine heb ik autocomplete voor branches met Git.

[Merk op dat we het over hebben git branch completering, niet bash completering (bijv. commandos, bestanden, etc). Dus NIET Lane “s antwoord ]

Ik kan bijvoorbeeld git checkout + typen TAB en krijg een lijst met branches.

Of ik kan git checkout feb* + TAB typen om alle branches die beginnen met “feb”.

Hoe kan ik deze functionaliteit op een Mac krijgen?

Ik heb geprobeerd bash-completion/bash_completion en bash-completion/bash_completion.sh.in maar geen vreugde. De eerste gaf foutmeldingen over declare: -A invalid_option. De tweede gaf geen fouten. Toen ik git checkout + TAB hoewel ik nog steeds een lijst met bestanden in de directory krijg, geen branches. Ik zit in de root van het project.

Automatisch aanvullen voor directories en bash-commandos werken goed, dus het is specifiek voor Git.

Reacties

  • Ik ben net lid geworden van deze community, dus ik kan ‘ nog niet antwoorden, maar ik vond ” oh-my-zsh ” om super super behulpzaam te zijn en ik vind de gebruikersinterface erg goed: github.com/ohmyzsh/ohmyzsh Dit is natuurlijk voor mensen die zsh gebruiken. Ik ‘ ga ervan uit dat het niet ‘ werkt voor bash …

Antwoord

ok, dus ik had het git autocompletion-script nodig.

Ik heb dat van deze url:

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

U hoeft zich geen zorgen te maken over in welke directory u zich bevindt als u dit als uw homedirectory uitvoert (~) wordt gebruikt met het doel.

Vervolgens heb ik aan mijn ~/.bash_profile bestand de volgende” execute if it exist “-code toegevoegd:

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

Update: ik “maak deze stukjes code beknopter om mijn .bashrc -bestand te verkleinen, in dit geval Ik gebruik nu:

test -f ~/.git-completion.bash && . $_ 

Opmerking: $_ betekent het laatste argument voor het vorige commando. dus . $_ betekent: voer het uit – “het” is in dit geval .git-completion.bash

Dit werkt nog steeds op zowel Ubuntu als OSX en op machines zonder het script .git-completion.bash script.

Nu git Tab ( eigenlijk “s git Tab Tab ) werkt als een charme!

ps: als dit niet werkt “Werk niet zomaar, misschien moet u chmod u+x ~/.git-completion.bash uitvoeren om uzelf de benodigde toestemming te geven:

  • chmod is het commando dat bestandsrechten wijzigt.
  • u betekent de gebruiker die eigenaar is van het bestand, standaard de maker ervan, dus jij
  • + betekent toestemming instellen / activeren / toevoegen
  • x betekent toestemming uitvoeren, dwz de mogelijkheid om de script

Reacties

  • Ja, het herstarten van de terminal na het toevoegen van het bash-script deed het werken. Ik zat hier af te vragen waarom het bleef proberen mijn map Models automatisch aan te vullen toen ik op m Tab om het automatisch te laten aanvullen tot master.
  • Zie ook unix.stackexchange.com/q/ 48862/10043 voor een andere tip
  • Als het geaccepteerde antwoord niet ‘ werkt voor iemand, probeer dan dit: source ~/.bash_profile na het plakken van de code. Het herstarten van de terminal zal ook hetzelfde doen.
  • Bedankt! Ik heb wat andere dingen geprobeerd, maar niets werkte (inclusief deze github.com/bobthecow/git-flow-completion/wiki/… ). Je oplossing werkte als een zonnetje;)
  • (je hebt ‘ niet gebrouwen git maar Apple standaard git) brew install git en start de terminal opnieuw voor degenen die met een rare fout worden geconfronteerd, zoals 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>]

Answer

Sommige mensen gebruiken liever een pakketbeheerder om het installeren, bijwerken en configureren van Mac OS-pakketten te automatiseren. Ik ben een fan van pakketbeheerders en ik denk dat Homebrew de beste pakketbeheerder voor Mac OS is (sommigen zouden zeggen dat het de feitelijke pakketbeheerder van Mac OS is).

Als je Homebrew eenmaal hebt geïnstalleerd, je kunt eenvoudig git installeren samen met bash-completering met brew install git bash-completion.

U “zult dan het volgende in uw ~/.bash_profile moeten plaatsen:

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

(Opmerking: als deze installatie mislukt met een 404-fout, en je hebt git al geïnstalleerd, verwijder dan gewoon het git-gedeelte van deze brew-installatie)

Meer info over het installeren van git en bash-completering met brew hier.

Reacties

  • Toevoegen van git en het toevoegen van bash-completion is helemaal niet hetzelfde als het toevoegen van .git-completion.bash Het zijn verschillende programmas en ze doen heel verschillende dingen – één doet het bash-commando autocompletion en de andere doet git commando autocompletion en ‘ nair die de twee zullen ontmoeten;)
  • werken als een charme, hartelijk dank. Kunt u alstublieft uitleggen wat de gebruik van het script dat je me hebt toegevoegd in ~/.bash_profile?
  • Ondanks wat anderen over dit antwoord hebben gezegd, is het degene die ervoor zorgde dat git autocomplete werkt i n terminal.
  • Merk op dat de regels die moeten worden toegevoegd aan de ~/.bash_profile voor mij zijn gespecificeerd in de uitvoer van homebrew. Ik heb die gebruikt in plaats van de bovenstaande regels. Dan moet je het bash-profiel opnieuw laden in elk terminalvenster waarin je automatisch aanvullen wilt gebruiken, door het commando source ~/.bash_profile
Antwoord

Voer dit uit op terminal:

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

Doe dan dit:

vi ~/.bash_profile 

Voeg deze regels toe:

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

Dat is alles. Dit werkte voor mij.

Reacties

  • (2e stap) Als iemand de voorkeur geeft aan het openen van het bash_profile met een teksteditor, doe dit dan: open -e .bash_profile
  • Op een nieuw Mac OS High Sierra bestaat het ~/.bash_profile -bestand niet ‘. Dat ‘ is prima, maak gewoon het bestand aan en plaats dat if script daarin en sla het op. Laad je shell daarna opnieuw en het zal werken.
  • Dit werkte voor me. In plaats van vi (waar ik altijd mee worstel) doe je gewoon open -e ~ / .bash_profile
  • Voor de 2e stap heb je deze link

Antwoord

git en git-completion.bash worden al geleverd met macOS-opdrachtregelprogrammas (xcode-select --install). Om bash autocomplete aan te zetten, voeg je dit toe aan je ~/.bash_profile.

[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash 

Dit zal ook autocomplete inschakelen voor git branches.

Reacties

  • Ik ben er vrij zeker van dat ik ‘ alle commandoregel-tools heb geïnstalleerd, maar dat bestand ‘ bestaat in mijn geval niet. Maar blij om met brouwsel te gaan (en aangezien mijn vriend ook met brouwsel is, misschien ook wijzer).
  • Bedankt! IMO, dit zou het antwoord moeten zijn met het groene vinkje.
  • Dit is de meest eenvoudige oplossing en het werkt voor mij
  • Dit werkte voor mij – hoewel ik een iets ander formaat gebruikte . 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
  • voor mij werkte het antwoord, maar na het toevoegen van de gegeven regel aan ~/.bash_profile vergeet dan niet om ook source ~/.bash_profile (vooral als je het ~/.bash_profile -bestand voor de eerste keer maakt)

Antwoord

Hier “is wat” sommigen van jullie in de war brengt: je hebt brew of ports geïnstalleerd, maar je gebruikt een systeemgit in /usr/bin/. Om dit te controleren:

which git 

Als je /usr/bin/git ziet, dan is ofwel het brouwsel niet correct geconfigureerd, of jij heb git niet via brew geïnstalleerd.

Als je git via brew installeert, dan zal het inschakelen van bash-aanvullingen voor brew ook bash-aanvullingen voor git inschakelen. Dit komt doordat /usr/local/etc/bash_completion feitelijk alles in /usr/local/bash_completion.d plaatst, en het brew-pakket voor git daar een git-voltooiingsscript installeert.

Reacties

  • Dit is logisch, maar hoe zou je ” bash-aanvullingen inschakelen voor brouwsel “? Je ‘ mist hoe je dat moet doen, dit zou een deel van je antwoord moeten zijn
  • Ik heb dit net gedaan (het werkt, dank je) via simplified.guide/macos/bash-completion , maar het automatisch aanvullen is een paar seconden vertraagd … vreemd

Antwoord

Git autocompletion on Catalina en nieuwer (met Homebrew)

macOs gewijzigd van bash naar zsh als standaardshell beginnend met Catalina.
Dus je zult specifieke autocomplete scripts nodig voor zsh.

Hier is hoe ze te installeren met Homebrew:

brew install zsh-completion 

De zsh-completering van Brew omvat in feite git-completering.

Om automatisch aanvullen te activeren, moet u een klein blok code toevoegen aan uw ~/.zshrc. Mogelijk moet u dat bestand in uw gebruikersmap maken als het nog niet bestaat. Opmerking: De uitvoer van het bovenstaande installatiescript zal je precies vertellen welke code je moet toevoegen, dus lees die zorgvuldig en kopieer vanaf daar voor het geval het is bijgewerkt sinds ik hier schrijf.

if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi 

Belangrijk:
Wanneer de installatie is voltooid, leest de uitvoer van het installatiescript.
Het zal u niet alleen instrueren om code toe te voegen aan .zshrc, maar u ook advies geven over aanvullende acties die nodig kunnen zijn, zoals het opnieuw opbouwen van zcompdump. Maar hoogstwaarschijnlijk heb je de extra stappen niet nodig.

Reacties

  • De terminal laat elke keer een irritant bericht zien dat ‘ s geopend: zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]? Maar het werkt!
  • Ik ben zojuist lid geworden van deze community, dus ik kan ‘ ik heb nog niet geantwoord, maar ik vond ” oh-my-zsh ” super super behulpzaam en ik vind de gebruikersinterface erg leuk: github.com/ohmyzsh/ohmyzsh Dit is natuurlijk voor mensen die zsh gebruiken. Ik ‘ ga ervan uit dat het niet ‘ werkt voor bash …

Antwoord

Je zou bash en git kunnen installeren vanuit MacPorts met de “bash_completion” optie ingeschakeld. Het is waarschijnlijk de gemakkelijkste manier om zowel git als de aanvullingen up-to-date te houden.

http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard

MacPorts installeren: http://www.macports.org/install.php/

Aanvullende informatie

Wat betreft het vinden van de voltooiingsinstellingen op je Linux-systeem, kijk eens in / etc /bash_completion.d/git (het is een lang bestand). Het kopiëren van dat op zichzelf zal waarschijnlijk niet werken, aangezien het ontworpen is om te worden verkregen door het voltooiingsraamwerk via / etc / bash_completion (die afkomstig is van /etc/profile.d/bash_completion.sh; bestanden in / etc / profile .d zijn afkomstig van / etc / profile).

Antwoord

Als je git-voltooiing gedeeltelijk is verbroken, zelfs na het zoeken https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash, je hoeft misschien alleen je git-versie bij te werken.

Bijvoorbeeld, toen ik git check + TAB, zou het git checkout correct automatisch aanvullen. Maar toen ik git checkout + , het toonde niet de lijst met branches, alleen HEAD.

De oplossing voor mij was om mijn git -versie. Ik zat op 2.7.0, wat blijkbaar niet compatibel was met de nieuwste git-completion.bash. Ik heb brew upgrade git, die het heeft geüpdatet naar 2.13.0, en nu prop vult mijn filiaalnamen automatisch aan.

Opmerkingen

  • Ik kreeg hetzelfde probleem, maar ik moest brew upgrade git en brew link git (met overschrijving ingeschakeld)
  • Bedankt voor de vangst @Tope. Ik heb update gewijzigd in upgrade.

Antwoord

Verreweg de beste referentie die ik “heb gevonden om dit probleem op te lossen, is op SpinDance , door Connor Livingston :

Als de git- complet.bash script bestaat niet op uw computer, haal het op via de link die ik hierboven heb gegeven (dat is dit ) en sla het op je lokale machine op in een nieuw bestand genaamd git-completering.bash in de /usr/local/etc/bash_completion.d/ directory. Als het git-complet.bash script bestaat op uw computer, maar niet in de /usr/local/etc/bash_completion.d/ directory, we zouden er een kopie van moeten maken in die directory. Een snelle sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash zou het moeten doen. Voor degenen die nieuwsgierig zijn naar de /usr/local/etc/bash_completion.d/ directory: het is voor het opslaan van nieuwe voltooiingscommandos, en je moet het misschien aanmaken als het nog niet bestaat op je machine.

Op dit punt zou het git-completering.bash-script op je lokale machine moeten staan in de /usr/local/etc/bash_completion.d/ directory. Nu zullen we het git completering-script in bash pluggen door ernaar te verwijzen vanuit ~ / .bash_profile .

Opmerking: de tilde in de vorige zin verwijst naar de homedirectory op uw computer. Voeg de volgende regel toe aan ~ / .bash_profile : source /usr/local/etc/bash_completion.d/git-completion.bash en sla op. De laatste stap is om je bash-profiel opnieuw te laden. U kunt dit bereiken door source ~ / .bash_profile uit te voeren in uw huidige bash-sessie.

Antwoord

Installeer oh-my-zsh en stel zsh in als je standaard shell en bedank me later 🙂

Reacties

  • Ik heb dat gedaan, juist in de hoop dat ik geen om ermee om te gaan – nog steeds geen vertakkingssuggesties na het raken van tab
  • Je hebt eigenlijk oh-my-zsh niet nodig, of zelfs helemaal geen afzonderlijk plug-insysteem! Git-voltooiing komt uit de doos, je hoeft het alleen maar aan te zetten.

Answer

Geprobeerd en het werkt goed voor branches, maar als je git st + tab doet, dan toont het de fout als deze

onbekende optie: –list-cmds = list-mainporcelain, anderen, nohelpers, alias, lijst-compleet, configuratiegebruik: git [–version] [–help] [-C] [-c =] [–exec-path [=]] [–html-path] [–man-path] [–info-path] [-p | –paginate | –no-pager] [–no-replace-objects] [–bare] [–git-dir =] [–work-tree =] [–namespace =] []

Gezocht op internet en ontdekte dat --list-cmds in .git-completion.bash in de nieuwste versie van de git en op mijn mac was de git-versie 2.17.2

Hier zijn de oplossingen

Oplossing 1

  1. Controleer de versie van de git met behulp van git --version commando
  2. Zet dan hetzelfde versienummer in de url als ik deed

    curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash 
  3. Volg daarna dezelfde stappen als in het bovenste antwoord, plaats de onderstaande code in ~/.bash_profile

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

Oplossing 2

Je zou moeten proberen om de git-versie bij te werken naar de laatste versie, dan zou het moeten werken.

Answer

De meeste gebruikers hebben git geïnstalleerd als onderdeel van de xcode-opdrachtregel tools op /usr/bin/git en bash completio n regels voor git zullen beschikbaar zijn op /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash.

In dit geval is het niet nodig om git te installeren vanaf Homebrew of bron git voltooiingsregels van raw.githubusercontent.com. Maak gewoon een symlink als volgt:

cd /usr/local/etc/bash_completion.d/ ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git 

Opmerking: zorg ervoor dat u het bash-completion pakket van Homebrew.

Antwoord

Voor macOS Catalina +, in zsh:

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

Werk vervolgens uw ~/.zshrc bij met:

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

Answer

Zoek uw .bashrc -bestand.

Open het en voeg dit toe regel onderaan:

source /etc/bash_completion.d/git

Reacties

  • Ik don ‘ t heeft iets een /etc/bash_completion.d/ map, op een relatief nieuw systeem (OSX 10.10.3).
  • Probeer te creëren het.
  • Niet bash_completion, git_completion die andere dingen doet.
  • @MichaelDurrant Het werkt. Vertrouw me.;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
  • @crmpicco Kunt u instructies geven voor het maken van /etc/bash_completion.d/git? Het zou uw antwoord waardevoller maken.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *