it-swarm-eu.dev

Come ottenere git-completion.bash per iniziare su Mac OS X?

Ho seguito http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without per aggiungere git-completion.bash a il mio /opt/local/etc/bash_completion.d/git-completion

e ho inserito PS1='\h:\W$(__git_ps1 "(%s)") \u\$ ' nel mio .bashrc_profile

Ma ora sto ricevendo questo -bash: __git_ps1: command not found tutto ciò che faccio cd.

Per favore, dimmi cosa mi manca?

91
n179911

Ho installato git usando MacPorts sulla mia nuova installazione di Snow Leopard. Dopo aver installato MacPorts dall'immagine .dmg, questi sarebbero i comandi in Terminal.app:

Sudo port selfupdate
Sudo port install git-core +bash_completion

Se vuoi anche il supporto per estrarre da repository e documenti SVN, usa questo al posto della seconda riga:

Sudo port install git-core +bash_completion +doc +svn

Quindi aggiungi quanto segue al tuo ~/.profile o ~/.bash_profile:

# MacPorts Bash Shell completamento comando 
 Se [-f/opt/local/etc/bash_completion]; poi
    . /opt/local/etc/bash_completion
fi

o per MacPorts dalla versione 2.1.2 su Mountain Lion:

# MacPorts Bash Shell completamento comando 
 Se [-f /opt/local/etc/profile.d/bash_completion.sh]; poi
  . /opt/local/etc/profile.d/bash_completion.sh
fi

o per MacPorts con le versioni più recenti di git:

if [-f /opt/local/share/git-core/git-Prompt.sh]; poi
    . /opt/local/share/git-core/git-Prompt.sh
fi

Nota: bash_completion.sh richiede la versione 4.1 o successiva. Se il completamento non funziona, prova echo $BASH_VERSION per vedere se questo è il problema. In tal caso, immettere MacPorts bash digitando bash e riprovare a eseguire il completamento di git.

65
Lara Dougan

Se hai installato git usando homebrew di quanto potresti regolare un po 'il consiglio MacPorts e aggiungilo al tuo .bash_profile e .bashrc

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

Il modo migliore per verificare se hai git correttamente installato usando homebrew ist da eseguire

brew info git

e controlla l'output per la directory di installazione del completamento di git bash

L'ultima versione di Git (1.7.12) richiede inoltre quanto segue per abilitare il prompt.

if [ -f `brew --prefix`/etc/bash_completion.d/git-Prompt.sh ]; then
    . `brew --prefix`/etc/bash_completion.d/git-Prompt.sh
fi
55
grundprinzip

Tutto quello che devi fare è posizionare il file git-completion.bash nella tua directory home bin utente e inserire il seguente file .profile o .bash_profile:

export PATH="$HOME/bin:$PATH"
source ~/bin/git-completion.bash
PS1='[\[email protected]\h \w$(__git_ps1 " (%s)")]\$ '

Ciò che fa è assicurarsi che il proprio bin locale sia nel PERCORSO e che il comando source faccia funzionare. Quindi, naturalmente, la modifica PS1 inserisce il ramo attualmente estratto nel Prompt.

Quindi, nessuna installazione di MacPort per installare una versione "di completamento" di GIT (particolarmente irritante se l'hai già installata).

26
iansheridan

Mentre la risposta attuale è corretta per i vecchi MacPorts, c'è un nuovo problema con il MacPort più recente che ha come risultato lo stesso errore.

Il pacchetto corrente bash-completion (2.0 r1) richiede almeno un bash 4.1 per funzionare correttamente. Come al solito OS X Terminal usa /bin/bash, ottiene solo un 3.x. Devi modificare le impostazioni del terminale per utilizzare /opt/local/bin/bash -l come descritto nella documentazione di MacPorts qui: http://trac.macports.org/wiki/howto/bash-completion

13
Andy

È necessario fornire le funzioni di completamento del comando. Aggiungi al tuo .bashrc_profile prima di PS1:

. /opt/local/etc/bash_completion.d/git-completion
6
jtimberman

Fastidiosamente questo è stato rotto ancora una volta. Questa volta è la gente git con la versione 1.7.12-1. Per consentire alle persone di avere solo la funzionalità Prompt senza la funzionalità di completamento (che può rallentare le cose), hanno refactorato la funzionalità Prompt da bash_completion/git e nel proprio file git-Prompt.sh.

Quindi aggiungere bash_completion come descritto da @Lara ti porterà solo al completamento (la scheda che colpisce completa i nomi di tag/rami).

Per ottenere __git_ps1 in modo che tu possa usarlo nel tuo PS1 Prompt, devi anche aggiungere quanto segue al tuo ~/.profile.

. /opt/local/share/doc/git-core/contrib/completion/git-Prompt.sh

Qualche sfondo è qui - https://bbs.archlinux.org/viewtopic.php?pid=1163632#p1163632

5
studgeek

Oppure con Homebrew

brew install bash-completion git-extras
3
derek73

Trovato una soluzione su una domanda simile :

Il git-osx-installer viene fornito con git-completion.bash e lo installa su /usr/local/git/contrib/completion/. Basta trovare quel file dal tuo .bash_profile per ottenere __git_ps1.

2
John Mellor

Per Mountain Lion e Mac-Ports avevo bisogno di usare le seguenti linee nel mio .bash_profile per ottenere sia __git_ps1 che i completamenti da eseguire normalmente:

# Bash Shell command completion
if [ -f /opt/local/share/doc/git-core/contrib/completion/git-completion.bash ]; then
  . /opt/local/share/doc/git-core/contrib/completion/git-completion.bash
fi

if [ -f /opt/local/share/doc/git-core/contrib/completion/git-Prompt.sh ]; then
  . /opt/local/share/doc/git-core/contrib/completion/git-Prompt.sh
fi
2
haysclark

Uso brew, quindi uno script bash_completion master che esegue tutti quelli in bash_completion.d sembra non essere fornito. Le soluzioni che propongono solo l'esecuzione di un singolo script per aggiungere i completamenti git non sono estensibili, poiché diversi pacchetti aggiungeranno script di completamento diversi e probabilmente vorrai eseguirli tutti. Quindi ho aggiunto questo (adattato da Arch Linux) alla fine di /etc/bashrc:

# source compat completion directory definitions
BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
if [[ -d $BASH_COMPLETION_COMPAT_DIR && -r $BASH_COMPLETION_COMPAT_DIR && \
    -x $BASH_COMPLETION_COMPAT_DIR ]]; then
    for i in $(LC_ALL=C command ls "$BASH_COMPLETION_COMPAT_DIR"); do
        i=$BASH_COMPLETION_COMPAT_DIR/$i
        [[ -f $i && -r $i ]] && . "$i"
    done
fi
1
ecloud

Almeno con Xcode 6, hai già git-completion.bash. È all'interno del pacchetto di app Xcode.

Basta aggiungere questo al tuo .bashrc:

source `xcode-select -p`/usr/share/git-core/git-completion.bash
1
jrc

Oltre al post di Adam K. Johnson

Puoi anche inserire il seguente ...

# MacPorts Bash Shell command completion
if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

... nel tuo/etc/profile, se vuoi.

In questo modo tutti gli utenti del sistema trarranno beneficio da qualsiasi script di completamento bash installato nella directory "/opt/local/etc/bash_completion.d/".

0
thekingoftruth

Mentre la risposta di Grundprinzip del 2011 funziona ancora bene, volevo aggiungere una risposta più recente ora che ora c'è un pacchetto Homebrew bash-completion ( formula , repo ) che lo rende ancora più semplice. (Questo include il completamento per git e altri strumenti comuni.)

Oggi macOS viene fornito con Bash 3, ma è possibile brew install bash per ottenere Bash 4. Se si esegue Bash 4, installare il ramo 2.x più recente di bash-completion.

Bash 4

  1. Correre:

    brew install [email protected]
    
  2. Aggiungi a ~/.bash_profile:

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

Bash 3

Se vuoi attaccare con stock bash 3.x su macOS, segui invece queste istruzioni.

  1. Correre:

    brew install bash-completion
    
  2. Aggiungi a ~/.bash_profile:

    echo "[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion" >> ~/.bash_profile
    

Riferimento: http://davidalger.com/development/bash-completion-on-os-x-with-brew/

0
Taylor Edmiston