.git-complete.bash produzindo erro no macOS Sierra 10.12.6

40

Segui o processo de git-completionacordo com a descrição fornecida em https://medium.com/@farooqyousuf/autocomplete-git-commands-and-branch-names-in-terminal-on-mac-os-x-4e0beac0388a :

O primeiro passo é executar este comando na janela do seu terminal, isso é basicamente pegar o script 'git-conclusão.bash' e colocá-lo no seu diretório pessoal.

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

Agora adicione esta linha ao seu '~ / .bash_profile'. Isso permitirá a execução do script de preenchimento automático do git, se houver

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

Agora você pode reiniciar todas as janelas do terminal ou apenas atualizar a janela do terminal em que deseja usar este script. Para atualizar, faça:

source ~/.bash_profile

A seguir está o erro que estou recebendo ao pressionar a tabtecla após digitar git:

unknown 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>]
Rishi Kulshreshtha
fonte
Que versão do git você está usando e qual versão o bash_completion pede?
user151019
git version 2.17.1
Rishi Kulshreshtha
Estou recebendo o mesmo no Mac e no Ubuntu também. versões do git 2.4.7 e 2.17.
19618 wisbucky

Respostas:

55

Encontrei exatamente o mesmo problema. Depois de algumas escavações, finalmente descobri qual é o problema raiz.

Eles fizeram algumas mudanças importantes no git-completion.bashscript, o que requer um novo recurso no git v2.18 --list-cmds,. O problema é que nenhum dos gerenciadores de pacotes foi atualizado para o git v2.18 ainda.

A maioria das instruções disponíveis diz para baixar raw.githubusercontent.com/git/git/ master/contrib/completion/git-completion.bash. Mas isso não é necessariamente a melhor opção, porque às vezes você vai ser o download de um mais recente git-completion.bashdo que a sua versão de suportes git.

Portanto, a solução é fazer o download da git-completion.bashversão que corresponde à sua versão git. Em seguida, procure-o novamente. Nesse caso:

https://raw.githubusercontent.com/git/git/v2.17.1/contrib/completion/git-completion.bash

Observe que está v2.17.1fazendo referência em vez de master. Mais tarde, quando você instala o git v2.18, pode voltar para masterou v2.18marcar.

wisbucky
fonte
2
Muito obrigado !! Eu estava procurando a solução semelhante, pois lembro que o git-completion.bashestava funcionando anteriormente.
Rishi Kulshreshtha
2
Fan-bloody-tastic
bhu Boue vidya
Isso resolve o problema do rastreamento de versão - stackoverflow.com/a/18898614/1874627
saurabheights
3

Atualizar o git para a versão mais recente é a solução mais simples. https://git-scm.com/download/mac

Depois disso, certifique-se de seguir as etapas

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

  2. Adicione este pequeno comando ao .bash_profilearquivo if [ -f ~/.git-completion.bash ]; then . ~/.git-completion.bash fi

Kidane
fonte
2

Não construa a partir da fonte; em vez disso, instale a partir do MacPorts .

Para instalar o git com o preenchimento automático, emita o seguinte comando:

 $ sudo port install git +bash_completion

feche e reabra o terminal e a conclusão do git deve funcionar

Allan
fonte
Eu tentei isso, mas não resolvi o problema. Ainda é o mesmo.
Rishi Kulshreshtha
Emita este comando: sudo find / -type -name "git-completion.bash"e publique os resultados em sua pergunta.
Allan
1

Você deve verificar sua versão do git e garantir que ela seja atualizada para pelo menos 1,8.

Eu tinha uma versão mais antiga 1.7.11, mas isso não funcionou e ocorreu o mesmo erro que você.

Mihai
fonte
git version 2.17.1
Rishi Kulshreshtha
0

Se você usa o Homebrew, convém

  1. atualizar git:

    brew upgrade git

  2. origine o git-completation.bash instalado no seu ~/.bash_profile:

    . /usr/local/etc/bash_completion.d/git-completion.bash

Isso garante que as versões instaladas do git e do script de conclusão sejam correspondentes.

Alexander Presber
fonte