Eu tenho seguido http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without para adicionar git-completion.bash
ao meu /opt/local/etc/bash_completion.d/git-completion
e eu coloco PS1='\h:\W$(__git_ps1 "(%s)") \u\$ '
no meu .bashrc_profile
Mas agora eu estou recebendo este -bash: __git_ps1: command not found
tudo que eu faço um cd
.
Você pode por favor me dizer o que estou perdendo?
Eu instalei o git usando MacPorts na minha nova instalação do Snow Leopard. Depois que o MacPorts for instalado a partir da imagem .dmg, esses serão os comandos no Terminal.app:
Sudo port selfupdate
Sudo port install git-core +bash_completion
Se você também quiser suporte para extrair dos repositórios e documentos do SVN, use isso em vez da segunda linha:
Sudo port install git-core +bash_completion +doc +svn
Em seguida, adicione o seguinte ao seu ~/.profile ou ~/.bash_profile:
# MacPorts Conclusão do comando Bash Shell If [-f/opt/local/etc/bash_completion]; então . /opt/local/etc/bash_completion fi
ou para MacPorts desde a versão 2.1.2 no Mountain Lion:
# MacPorts Conclusão do comando Bash Shell If [-f /opt/local/etc/profile.d/bash_completion.sh]; então . /opt/local/etc/profile.d/bash_completion.sh fi
ou para MacPorts com versões mais novas do git:
if [-f /opt/local/share/git-core/git-Prompt.sh]; então . /opt/local/share/git-core/git-Prompt.sh fi
Nota: o bash 4.1 ou superior é requerido por bash_completion.sh. Se a conclusão não funcionar, tente echo $BASH_VERSION
para ver se esse é o problema. Em caso afirmativo, insira MacPorts bash digitando bash
e tente concluir o git novamente.
Se você instalou o git usando homebrew do que você pode ajustar um pouco o conselho do MacPorts e adicioná-lo ao seu .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
A melhor maneira de verificar se você tem o git corretamente instalado usando o homebrew é para executar
brew info git
e verifique a saída para o diretório de instalação do git bash completion
A versão mais recente do Git (1.7.12) também requer o seguinte para ativar o prompt.
if [ -f `brew --prefix`/etc/bash_completion.d/git-Prompt.sh ]; then
. `brew --prefix`/etc/bash_completion.d/git-Prompt.sh
fi
Tudo o que você precisa fazer é colocar o arquivo git-completion.bash
no diretório home bin
do seu usuário e colocar o seguinte em seu arquivo .profile
ou .bash_profile
:
export PATH="$HOME/bin:$PATH"
source ~/bin/git-completion.bash
PS1='[\[email protected]\h \w$(__git_ps1 " (%s)")]\$ '
O que isto faz é certificar-se de que seu bin local está no PATH e o comando source
faz as coisas funcionarem. Então, é claro, a alteração do PS1 coloca a ramificação atualmente registrada no prompt.
Portanto, não é necessário instalar o MacPort para instalar a versão de "conclusão" do GIT (especialmente irritante se você já o tiver instalado).
Enquanto a resposta atual está correta para MacPorts mais antigos, há um novo problema com os MacPorts mais atuais, resultando no mesmo erro.
O atual pacote bash-completion (2.0 r1) requer pelo menos uma bash 4.1 para funcionar corretamente. Como um terminal usual do OS X usa /bin/bash
, ele só recebe um 3.x. Você tem que alterar as configurações do terminal para usar /opt/local/bin/bash -l
conforme descrito na documentação do MacPorts aqui: http://trac.macports.org/wiki/howto/bash-completion
Você precisa criar as funções de conclusão de comandos. Adicione ao seu .bashrc_profile antes do PS1:
. /opt/local/etc/bash_completion.d/git-completion
Irritantemente isso foi quebrado novamente. Desta vez é o git pessoal com a versão 1.7.12-1. Para permitir que as pessoas tenham apenas a funcionalidade Prompt sem a funcionalidade de conclusão (o que pode atrasar as coisas), elas refatoraram a funcionalidade Prompt do bash_completion/git e para o seu próprio arquivo git-Prompt.sh.
Então, adicionando bash_completion conforme descrito por @Lara, você só receberá a conclusão (a aba de acesso completa os nomes de tag/branch).
Para obter o __git_ps1
para que você possa usá-lo no seu PS1 Prompt, você também precisa adicionar o seguinte ao seu ~/.profile.
. /opt/local/share/doc/git-core/contrib/completion/git-Prompt.sh
Alguns antecedentes estão aqui - https://bbs.archlinux.org/viewtopic.php?pid=1163632#p1163632
Ou com Homebrew
brew install bash-completion git-extras
Encontrei uma solução em um pergunta semelhante :
O git-osx-installer vem com git-completion.bash
e o instala em /usr/local/git/contrib/completion/
. Apenas forneça esse arquivo do seu .bash_profile
para obter __git_ps1
.
Para Mountain Lion e Mac-Ports, precisei usar as seguintes linhas no meu .bash_profile para que ambas __git_ps1 e completions fossem executadas 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
Eu uso brew, então um script master bash_completion
que executa todos os bash_completion.d
parece não ser fornecido. As soluções que propõem apenas executar um único script para adicionar completações git não são extensíveis, porque diferentes pacotes irão adicionar diferentes scripts de conclusão, e você provavelmente quer executá-los todos. Por isso, adicionei isso (adaptado do Arch Linux) ao final de /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
Pelo menos com o Xcode 6, você já possui git-completion.bash
. Está dentro do pacote de aplicativos Xcode.
Apenas adicione isto ao seu .bashrc:
source `xcode-select -p`/usr/share/git-core/git-completion.bash
Além da postagem de Adam K. Johnson
Você também pode colocar o seguinte ...
# MacPorts Bash Shell command completion
if [ -f /opt/local/etc/bash_completion ]; then
. /opt/local/etc/bash_completion
fi
... no seu/etc/profile, se você quiser.
Dessa forma, todos os usuários do sistema se beneficiarão de quaisquer scripts de conclusão bash instalados no diretório "/opt/local/etc/bash_completion.d/".
Enquanto a resposta acima do grundprinzip de 2011 ainda funciona bem, eu queria adicionar uma resposta mais recente agora que agora há um pacote Homebrew bash-completion ( formula , repo ) que torna isso ainda mais fácil. (Isso inclui a conclusão do git e de outras ferramentas comuns.)
Hoje, o macOS vem com o Bash 3, mas você pode brew install bash
para obter o Bash 4. Se você estiver executando o Bash 4, instale o novo branch 2.x do bash-completion.
Corre:
brew install [email protected]
Adicione a ~/.bash_profile
:
if [ -f /usr/local/share/bash-completion/bash_completion ]; then
. /usr/local/share/bash-completion/bash_completion
fi
Se você quiser ficar com o estoque bash 3.x no macOS, siga estas instruções.
Corre:
brew install bash-completion
Adicione a ~/.bash_profile
:
echo "[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion" >> ~/.bash_profile
Referência: http://davidalger.com/development/bash-completion-on-os-x-with-brew/