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 opm
Tab
om het automatisch te laten aanvullen totmaster
. - 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 standaardgit
)brew install git
en start de terminal opnieuw voor degenen die met een rare fout worden geconfronteerd, zoalsgit 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 vanbash-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 commandosource ~/.bash_profile
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 datif
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 ooksource ~/.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
enbrew link git
(met overschrijving ingeschakeld) - Bedankt voor de vangst @Tope. Ik heb
update
gewijzigd inupgrade
.
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
- Controleer de versie van de git met behulp van
git --version
commando -
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
-
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.