Questão Como obter o git-completion.bash para trabalhar no Mac OS X?


Eu segui http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without para adicionar git-completion.bash para o meu /opt/local/etc/bash_completion.d/git-completion

e eu coloquei PS1='\h:\W$(__git_ps1 "(%s)") \u\$ ' no meu .bashrc_profile

Mas agora estou recebendo isso -bash: __git_ps1: command not found tudo que faço cd.

Você pode por favor me dizer o que estou perdendo?


87


origem


Veja também: trac.macports.org/wiki/howto/bash-completion - Ioannis Filippidis


Respostas:


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:

Conclusão do comando # MacPorts 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:

Conclusão do comando # MacPorts 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, digite MacPorts bash digitando bash e tente concluir o git novamente.


65



Acabei de copiar colado e ainda recebo o erro que o OP tem. = \. Como você diz o que foi incluído? Eu não entro bash_completion é originado - NullVoxPopuli
note com novas versões do git / macport / bash-completion o prompt está em um arquivo diferente. Vejo: trac.macports.org/ticket/36334  if [ -f /opt/local/share/git-core/git-prompt.sh ]; then . /opt/local/share/git-core/git-prompt.sh fi - Yehosef
Porque /opt/local/etc/profile.d/bash_completion.sh necessidades $BASH_VERSION 4.1 ou melhor, eu tive que fazer o seguinte em um Mac OS X 10.8.3 com MacPorts 2.1.3: Mudar o shell de login do Mac OS X do seu padrão /bin/bash (3.2.48 (1) -release) para MacPorts /opt/local/bin/bash (4.2.42 (2) -release) como o descrito aqui: stackoverflow.com/a/791244/287984. Basicamente if [ `grep /opt/local/bin/bash /etc/shells` ]; then echo /opt/local/bin/bash | chsh -s /opt/local/bin/bash; else echo /opt/local/bin/bash | sudo tee -a /etc/shells; chsh -s /opt/local/bin/bash; fi - Uwe Günther
Funcionou muito bem para mim. Teve que substituir /bin/bash em Terminal.app com /opt/local/bin/bash de macports + todo o .bash_profile mudanças sugeridas aqui. - bgs
Para ir para o bash 4.1 ou posterior, você pode seguir as instruções aqui: apple.stackexchange.com/questions/70132/… - ThomasW


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

53



Para mais sobre __git_ps1, Vejo superuser.com/a/477749/90231 responder nesta pilha. - RichVel


Tudo que você precisa fazer é colocar o git-completion.bash arquivo na sua casa de usuário bin diretório e coloque o seguinte em você .profile ou .bash_profile Arquivo:

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

O que isto faz é certificar-se de que o seu bin local está no PATH e no source comando 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).


26



github.com/git/git/raw/master/contrib/completion/… - Nickolay
Para aqueles que querem saber como combinar essa coisa do PS1 com cores no seu prompt, veja: stackoverflow.com/questions/816790/… - Nickolay
Mais precisamente, git-completion.bash só precisa estar em algum lugar no seu $PATH. Eu decidi colocar o meu em /usr/local/bin/ de modo que eu não precisei modificar meus $PATH. - metavida


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 bash-completion pacote (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 mudar 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


13



Esta é a resposta mais correta, pois só comecei a ter o problema depois de atualizar o macports. A única desvantagem de usar o macports bash do terminal é que agora ele me avisa sobre a finalização dos processos em execução quando tento fechar a janela do meu terminal - você se deparou com isso? - vitch


Você precisa fornecer as funções de conclusão de comando. Adicione ao seu .bashrc_profile antes do PS1:

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

6



git-completion.bash pode ser encontrado aqui: raw.github.com/git/git/master/contrib/completion/… - TJ Biddle


Irritantemente isso foi quebrado novamente. Desta vez é o pessoal do git com a versão 1.7.12-1. Para permitir que as pessoas tenham apenas a funcionalidade de prompt sem a funcionalidade de conclusão (o que pode atrasar as coisas), elas refatoraram a funcionalidade de prompt de bash_completion / git e em seu próprio arquivo git-prompt.sh.

Portanto, adicionar bash_completion conforme descrito por @Lara só lhe dará 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 prompt do PS1, você também precisa adicionar o seguinte ao seu ~ / .profile.

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

Algum plano de fundo está aqui - https://bbs.archlinux.org/viewtopic.php?pid=1163632#p1163632


5



O arquivo em questão: raw.github.com/git/git/master/contrib/completion/git-prompt.sh - papercowboy


Ou com Homebrew

brew install bash-completion git-extras

3



Muito obrigado. Deveria ser brew install bash-completion git-extras embora (traço em vez de sublinhado). - simonair


Encontrei uma solução em um pergunta semelhante:

o git-osx-installer vem com git-completion.bash e instala-o para /usr/local/git/contrib/completion/. Apenas forneça esse arquivo do seu .bash_profile para obter __git_ps1.


2