Como configurar a conclusão da linha de comando git bash?

129

Por exemplo, em uma nova máquina ubuntu, eu acabei de executar sudo apt-get gite não há conclusão ao digitar, por exemplo git check[tab].

Não encontrei nada em http://git-scm.com/docs , mas a conclusão do IIRC está incluída no pacote git atualmente e eu só preciso da entrada correta no meu bashrc.

Vincent Scheib
fonte
Funciona para mim imediatamente no Ubuntu Precise (e Fedora 17).
Caracol mecânico
2
Para verificar se você o possui por padrão ou não, você pode executar (cd ~ && exec cat .bashrc | grep completion).
Aderchox

Respostas:

181

No Linux

na maioria das distribuições, o script de conclusão do git é instalado no /etc/bash_completion.d/(ou /usr/share/bash-completion/completions/git) quando você instala o git, não é necessário acessar o github. Você só precisa usá-lo - adicione esta linha ao seu .bashrc:

source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git

Em algumas versões do Ubuntu, o preenchimento automático do git pode estar quebrado por padrão; a reinstalação executando este comando deve corrigi-lo:

sudo apt-get install git-core bash-completion

No Mac

Você pode instalar a conclusão do git usando o Homebrew ou o MacPorts.

Homebrew

if $BASH_VERSION> 4: brew install bash-completion@2(versão atualizada) Tenha especial cuidado com a versão do bash que você possui como padrão do MacOS com o lançamento do 3.2.57 (1).

adicionar a .bash_profile:

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

Para versões mais antigas do bash: brew install bash-completion

adicionar a .bash_profile:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

MacPorts

sudo port install git +bash_completion

adicione isso ao seu .bash_profile:

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

mais informações neste guia: Instalar a conclusão do Gash do Bash

Observe que, em todos os casos, você precisa criar um novo shell (abrir uma nova guia / janela do terminal) para que as alterações entrem em vigor.

Sergey Evstifeev
fonte
1
A maioria das caixas * nix (especialmente o Ubuntu) já possui esse arquivo; portanto, apenas fornecê-lo ao meu usuário corrigiu o meu problema. Obrigado.
Nevevind
5
ubuntu pode tê-lo como /etc/bash_completion.d/git-prompt
Catskul
2
Eu tenho Git, mas não /etc/bash_completion.d
sixty4bit
13
No meu Ubuntu 14.04 esse arquivo é /usr/share/bash-completion/completions/git. /etc/bash_completion.d/git-prompté usado para suporte imediato ao git, não para conclusão.
Ray Chen
18
AVISO: O método de homebrew do Mac só funciona se você tiver o git instalado através do homebrew, brew uninstall bash-completione brew install gitse o git foi instalado por outro método antes, as etapas acima funcionarão.
precisa saber é o seguinte
66

Eu tive o mesmo problema, seguido as etapas abaixo:

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

adicione as seguintes linhas ao seu .bash_profile(geralmente na sua pasta pessoal)

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

fonte: http://code-worrier.com/blog/autocomplete-git/

jospratik
fonte
Eu estava atrás de um proxy, então tive que configurá-lo primeiro para que o curl funcionasse export https_proxy=proxy_ip:proxy_port. Realmente não entendo por que ele não obtém as configurações do sistema.
madlymad
2
não é realmente necessário ocultar esse arquivo com um ponto na frente do nome. Também: cuidado com as versões git (veja a resposta do wisbucky)
Walter Tross
42

A maioria das instruções que você vê lhe diz para baixar

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

e fonte que no seu script de inicialização bash como .bashrc.

Mas há um problema com isso, porque está fazendo referência à masterramificação, que é a versão mais recente do git-completion.bash. O problema é que, às vezes, ele falha porque não é compatível com a versão do git que você instalou.

De fato, agora isso vai quebrar porque o master filial git-completion.bashpossui novos recursos que requerem o git v2.18, para o qual nenhum dos gerenciadores e instaladores de pacotes atualizou. Você receberá um errounknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

Portanto, a solução mais segura é fazer referência à versão / tag que corresponde ao git que você instalou. Por exemplo:

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

Observe que ele possui um v2.17.no URL em vez de master. E então, é claro, certifique-se de fornecer isso no script de inicialização do bash.

wisbucky
fonte
Esta é a melhor resposta para o macOS.
ASHelly #
Uau ... Depois de cerca de uma hora batendo no meu cérebro por causa disso, seu comentário foi a chave. Obrigado por esta solução! Dourado!
Myke Carter
4
O arquivo específico da versão do macos já deve estar no disco aqui: /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash Apenas para garantir, eu a diferenciei da versão 2.17.1 no github e ela corresponde.
JMT
18

Ubuntu 14.10

Instale git-coreebash-completion

sudo apt-get install -y git-core bash-completion
  • Para uso atual da sessão

    source /usr/share/bash-completion/completions/git
  • Para tê-lo sempre ativo em todas as sessões

    echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc
Andrzej Rehmann
fonte
1
Obrigado, isso funcionou para mim no Ubuntu 16.04 LTS :)
Mrunal Pagnis
5

Basta fazer isso no seu ~/.bashrc:

source /usr/share/bash-completion/completions/git

Outras respostas estão lhe dizendo para instalar bash-completion, você não precisa fazer isso, mas se o fizer, não será necessário fornecer a conclusão diretamente. Você faz um ou outro, não os dois.

Uma solução mais genérica é consultar o local do sistema, conforme recomendado pelo projeto de conclusão do bash:

source "$(pkg-config --variable=completionsdir bash-completion)"/git
FelipeC
fonte
1
Sua solução genérica funcionou perfeitamente para mim no Ubuntu 18.04. Para inicializar, seu método é extremamente conciso - obrigado!
Jason R Stevens CFA
4

no meu ubuntu há um arquivo instalado aqui:

source /etc/bash_completion.d/git-prompt

você pode seguir os links para a /usr/lib/git-corepasta Você pode encontrar uma instrução, como configurar o PS1 ou usar__git_ps1

kisp
fonte
3

Pode ser útil para alguém: -

Depois de baixar o arquivo .git-conclusão.bash no link a seguir,

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

e tentando usar a função __git_ps1, estava recebendo erro como--

 -bash: __git_ps1: command not found

Aparentemente, precisamos baixar scripts separadamente do master para fazer esse comando funcionar, pois __git_ps1 é definido no git-prompt.sh. Tão parecido com o download de .git-complete.bash, obtenha o git-prompt.sh:

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

e adicione o seguinte no seu .bash_profile

source ~/.bash_git
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
export PS1='\W$(__git_ps1 "[%s]")>'
fi

source ~ / .bash.git executará o arquivo baixado e

export PS1='\W$(__git_ps1 "[%s]") O comando anexará o nome da ramificação de check-out após o diretório de trabalho atual (se for um repositório git).

Então, será parecido com: -

dir_Name[branch_name] onde dir_Name é o nome do diretório de trabalho e branch_name será o nome da filial em que você está trabalhando atualmente.

Observe - __git_ps1 faz distinção entre maiúsculas e minúsculas.

Nicks
fonte
1

Arch Linux

Origem /usr/share/git/completion/git-completion.bashem um dos arquivos de inicialização do bash.

Por exemplo:

# ~/.bashrc

source /usr/share/git/completion/git-completion.bash

Você pode encontrar o script em outros locais como, /usr/share/bash-completion/completions/gitmas esses scripts não funcionaram para mim.

Roubar
fonte
-1

Ubuntu

Há uma resposta bonita aqui . Trabalhou para mim no Ubuntu 16.04

janelas

Git Bash é a ferramenta para permitir o preenchimento automático. Não tenho certeza se isso faz parte da distribuição padrão, então você pode achar esse link também útil. A propósito, o Git Bash permite usar comandos de shell do Linux para trabalhar no Windows, o que é ótimo para pessoas que têm experiência no ambiente GNU / Linux.

andrgolubev
fonte
-1

No Github no projeto Git, eles fornecem um arquivo bash para o preenchimento automático dos comandos git.

Você deve baixá-lo para o diretório inicial e forçar o bash a executá-lo. São simplesmente duas etapas e são perfeitamente explicadas (passo a passo) na seguinte postagem no blog.

blog preocupado com o código: autocomplete-git /

Eu testei no mac, ele deve funcionar em outros sistemas também. Você pode aplicar a mesma abordagem a outros sistemas operacionais.

wasabi
fonte