Em minha máquina Linux, fiz o preenchimento automático para branches com Git.

[Nota que estamos falando conclusão de branch git, não conclusão de bash (por exemplo, comandos, arquivos, etc). Portanto, NÃO a resposta de Lane “ de forma alguma]

Por exemplo, posso digitar git checkout + TAB e obter uma lista de ramos.

Ou posso digitar git checkout feb* + TAB para obter todos branches que começam com “feb”.

Como posso obter essa funcionalidade em um Mac?

Tentei baixar e executar bash-completion/bash_completion e bash-completion/bash_completion.sh.in mas sem alegria. O primeiro deu mensagens de erro sobre declare: -A invalid_option. O segundo não deu erros. Quando eu git checkout + TAB embora eu ainda esteja recebendo uma lista de arquivos no diretório, não branches. Estou na raiz do projeto.

Completar automaticamente para diretórios e Os comandos bash estão funcionando bem, então são específicos do Git.

Comentários

  • Acabei de entrar nesta comunidade, então posso ‘ ainda não responder, mas descobri ” oh-my-zsh ” para ser super superútil e eu realmente gosto da IU: github.com/ohmyzsh/ohmyzsh Isso, claro, é para pessoas que usam zsh. Eu ‘ estou supondo que não ‘ não funcione para bash …

Resposta

ok, então eu precisava do script de preenchimento automático git .

Consegui isso neste url:

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

Não precisa se preocupar com o diretório em que você está ao executá-lo como seu diretório inicial (~) é usado com o destino.

Então adicionei ao meu ~/.bash_profile arquivo o seguinte código” execute se existir “:

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

Atualização: estou tornando esses trechos de código mais concisos para reduzir meu arquivo .bashrc, neste caso Agora eu uso:

test -f ~/.git-completion.bash && . $_ 

Observação: $_ significa o último argumento do comando anterior. então . $_ significa executá-lo – “it” sendo .git-completion.bash neste caso

Isso ainda funciona no Ubuntu e OSX e em máquinas sem o script .git-completion.bash script.

Agora git Guia ( na verdade, “s git Tab Tab ) funciona perfeitamente!

ps: Se isso não funcionar “para trabalhar imediatamente, pode ser necessário executar chmod u+x ~/.git-completion.bash para conceder a si mesmo a permissão necessária:

  • chmod é o comando que modifica as permissões do arquivo
  • u significa o usuário que possui o arquivo, por padrão seu criador, ou seja, você
  • + significa definir / ativar / adicionar uma permissão
  • x significa permissão de execução, ou seja, a capacidade de executar o script

Comentários

  • Sim, reiniciar o terminal após adicionar o script bash fez com que funcionasse. Eu estava sentado aqui me perguntando por que ele continuava tentando preencher automaticamente para minha pasta Models quando bati em m Tab para torná-lo autocompletar para master.
  • Veja também unix.stackexchange.com/q/ 48862/10043 para uma dica diferente
  • Se a resposta aceita não ‘ t funcionar para ninguém, tente isto: source ~/.bash_profile depois de colar o código. Reiniciar o terminal também fará a mesma coisa.
  • Obrigado! Tentei outras coisas, mas nada funcionou (incluindo este github.com/bobthecow/git-flow-completion/wiki/… ). Sua solução funcionou perfeitamente;)
  • (você não ‘ não preparou git mas o padrão da Apple git) brew install git e reinicie o terminal para aqueles que estão enfrentando erros estranhos como git checunknown 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>]

Resposta

Algumas pessoas preferem usar um gerenciador de pacotes para automatizar a instalação, atualização e configuração de pacotes do Mac OS. Eu sou um fã de gerenciadores de pacotes e acho que o Homebrew é o melhor gerenciador de pacotes para Mac OS (alguns diriam que é o gerenciador de pacotes do Mac OS de fato).

Depois de instalar o Homebrew, você pode simplesmente instalar git junto com bash-completed com brew install git bash-completion.

Você precisará colocar o seguinte em seu ~/.bash_profile:

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

(Observação: se esta instalação falhar com um erro 404, e você já tiver o git instalado, apenas remova a parte git desta instalação brew)

Mais informações sobre a instalação do git e bash-completed com brew aqui.

Comentários

  • Adicionando git e adicionar bash-completion não é o mesmo que adicionar .git-completion.bash Eles são programas diferentes e fazem coisas bem diferentes – um faz o comando bash autocompletion e o outro git command autocompletion e ‘ nair os twain se encontrarão;)
  • funcionando perfeitamente, muito obrigado. Você poderia explicar o que é uso de script que você adicionou em ~/.bash_profile?
  • Apesar do que outros disseram sobre esta resposta, foi ela que fez o git autocomplete funcionar i terminal n.
  • Observe que as linhas a serem adicionadas ao ~/.bash_profile foram especificadas para mim na saída do homebrew. Usei esses em vez das linhas acima. Em seguida, você precisa recarregar o perfil bash em cada janela do terminal em que gostaria de usar o preenchimento automático, usando o comando source ~/.bash_profile

Resposta

Execute isto no terminal:

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

Então, faça isto:

vi ~/.bash_profile 

Adicione estas linhas:

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

Isso é tudo. Funcionou para mim.

Comentários

  • (2ª etapa) Se alguém preferir abrir o bash_profile com um editor de texto, basta fazer isso: open -e .bash_profile
  • Em um Mac OS High Sierra virgem, o ~/.bash_profile arquivo não ‘ existe. Isso ‘ tudo bem, basta criar o arquivo e colocar aquele if script lá e salvar. Recarregue seu shell depois e ele funcionará.
  • Isso funcionou para eu. Em vez de vi (com o qual sempre luto) apenas abra -e ~ / .bash_profile
  • Para a segunda etapa, você precisará de este link

Resposta

git e git-completion.bash já vêm com ferramentas de linha de comando do macOS (xcode-select --install). Para habilitar o preenchimento automático do bash, adicione ao seu ~/.bash_profile.

[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash 

Isso também habilitará o preenchimento automático para ramos git.

Comentários

  • Tenho certeza que ‘ ve ferramentas de linha de comando instaladas, mas esse arquivo não ‘ não existe no meu caso. Feliz por ir com cerveja, porém (e como meu git também está com cerveja, talvez mais sábio também).
  • Obrigado! IMO, esta deve ser a resposta com a marca de verificação verde.
  • Esta é a solução mais direta e funciona para mim
  • Funcionou para mim – embora eu tenha usado um formato ligeiramente diferente . if [ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ]; then . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash > /dev/null fi
  • para mim a resposta funcionou, mas depois de adicionar a linha fornecida a ~/.bash_profile não se esqueça de também executar source ~/.bash_profile (especialmente se você criar o ~/.bash_profile arquivo pela primeira vez)

Resposta

Aqui está o que está confundindo alguns de vocês: você tem o brew ou ports instalados, mas está usando um git do sistema em /usr/bin/. Para verificar isso:

which git 

Se você vir /usr/bin/git, então a mistura não está “configurada corretamente ou você” não instalei o git via brew.

Se você instalar o git via brew, habilitar as completações do bash para o brew também habilitará as completações do bash para o git. Isso ocorre porque /usr/local/etc/bash_completion realmente fornece tudo em /usr/local/bash_completion.d, e o pacote brew para git instala um script de conclusão git lá.

Comentários

  • Isso faz sentido, mas como você ” habilitaria conclusões de bash para cerveja “? Você ‘ não sabe como fazer isso, isso deve fazer parte da sua resposta
  • Acabei de fazer isso (funciona, obrigado) via simplified.guide/macos/bash-completion , mas a conclusão automática demora alguns segundos … ímpar

Resposta

Preenchimento automático do Git em Catalina e mais recente (usando Homebrew)

macOs alterados de bash para zsh como shell padrão começando com Catalina.
Então você vai precisa de scripts de preenchimento automático específicos para zsh.

Aqui está como instalá-los com o Homebrew:

brew install zsh-completion 

O zsh-complete do Brew “de fato inclui o git-completed.

Para ativar o preenchimento automático, você precisa adicionar um pequeno bloco de código ao seu ~/.zshrc. Pode ser necessário criar esse arquivo na pasta do usuário, se ele ainda não existir. Observação: A saída do script de instalação acima dirá exatamente qual código adicionar, então leia com atenção e copie de lá caso tenha sido atualizado desde que escrevi aqui.

if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi 

Importante:
Quando a instalação for concluída, leia a saída do script de instalação.
irá instruí-lo não apenas a adicionar código a .zshrc, mas também aconselhá-lo sobre ações adicionais que podem ser necessárias, como forçar a reconstrução do zcompdump. Mas provavelmente você não precisará das etapas adicionais.

Comentários

  • O terminal mostra uma mensagem irritante toda vez que ‘ s abertos: zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]? Mas funciona!
  • Acabei de entrar nesta comunidade, então posso ‘ ainda não respondi, mas descobri que ” oh-my-zsh ” é extremamente útil e realmente gosto da IU: github.com/ohmyzsh/ohmyzsh Isso, claro, é para pessoas que usam zsh. Eu ‘ estou supondo que não ‘ não funcione para bash …

Resposta

Você pode instalar bash e git de MacPorts com a opção “bash_completion” habilitada. É provavelmente a maneira mais fácil de manter o git e as conclusões atualizados.

http://denis.tumblr.com/post/71390665/adding-bash-completion-for-git-on-mac-os-x-snow-leopard

Para instalar MacPorts: http://www.macports.org/install.php/

Informações adicionais

Para localizar as configurações de conclusão em seu sistema Linux, dê uma olhada em / etc /bash_completion.d/git (é um arquivo longo). Copiar isso por si só provavelmente não funcionará, no entanto, já que foi projetado para ser fornecido pela estrutura de conclusão por meio de / etc / bash_completion (que é obtido de /etc/profile.d/bash_completion.sh; arquivos em / etc / profile .d são originados de / etc / profile).

Resposta

Se a sua conclusão git estiver parcialmente quebrada, mesmo após o sourcing https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash, você pode apenas precisar atualizar sua versão git.

Por exemplo, quando eu digitei git check + TAB, ele completaria automaticamente git checkout. Mas quando eu digitei git checkout + TAB, não exibia a lista de ramos, apenas HEAD.

A correção para mim foi atualizar meu git. Eu estava no 2.7.0, que aparentemente não era compatível com a última git-completion.bash. Executei brew upgrade git, que o atualizou para 2.13.0 e agora prop erly autocomplete meus nomes de branch.

Comentários

  • Eu estava tendo o mesmo problema, mas tive que executar brew upgrade git e brew link git (com substituição ativada)
  • Obrigado pela captura @Tope. Mudei update para upgrade.

Resposta

De longe, a melhor referência que encontrei para resolver esse problema é no SpinDance , de Connor Livingston :

Se o git- O script de conclusão.bash não existe em sua máquina, recupere-o do link que forneci acima (que é este ) e salve-o em sua máquina local em um novo arquivo chamado git-completed.bash no /usr/local/etc/bash_completion.d/ diretório. Se o script git-completed.bash existir em sua máquina, mas não está no diretório /usr/local/etc/bash_completion.d/ , devemos criar uma cópia dele nesse diretório. Um rápido sudo cp /current/path/to/your/git-completion.bash /usr/local/etc/bash_completion.d/git-completion.bash deve fazer o truque. Para aqueles que estão curiosos sobre o diretório /usr/local/etc/bash_completion.d/ : é para armazenar novos comandos de conclusão, e você pode ter que criá-lo se ainda não existir em seu máquina.

Neste ponto, o script git-completed.bash deve existir em sua máquina local no diretório /usr/local/etc/bash_completion.d/ . Agora vamos conectar o script de conclusão git ao bash apontando para ele em ~ / .bash_profile .

Nota: o til na frase anterior se refere ao diretório inicial do seu computador. Adicione a seguinte linha a ~ / .bash_profile : source /usr/local/etc/bash_completion.d/git-completion.bash e salve. A etapa final é recarregar seu perfil bash. Você pode conseguir isso executando source ~ / .bash_profile em sua sessão bash atual.

Resposta

Instale oh-my-zsh e defina zsh como seu shell padrão e me agradeça mais tarde 🙂

Comentários

  • Eu fiz isso, precisamente na esperança de não ter para lidar com isso – ainda nenhuma sugestão de branch após acessar a guia
  • Você realmente não precisa do oh-my-zsh , ou mesmo de qualquer sistema de plug-in separado! A conclusão do Git sai da caixa, você só precisa habilitá-lo.

Resposta

Tentei e pronto funciona bem para branches, mas quando você faz git st + tab, ele mostra o erro como este

opção desconhecida: –list-cmds = list-mainporcelain, others, nohelpers, alias, list-complete, config usage: git [–version] [–help] [-C] [-c =] [–exec-path [=]] [–html-path] [–man-path] [–info-path] [-p | –paginate | –no-pager] [–no-replace-objects] [–bare] [–git-dir =] [–work-tree =] [–namespace =] []

Pesquisou na internet e descobriu que --list-cmds em .git-completion.bash estava na versão mais recente do git e no meu mac a versão git era 2.17.2

Aqui estão as soluções

Solução 1

  1. Verifique a versão do git usando o git --version comando
  2. Em seguida, coloque o mesmo número de versão no url que eu fiz

    curl https://raw.githubusercontent.com/git/git/v2.17.2/contrib/completion/git-completion.bash -o ~/.git-completion.bash 
  3. Em seguida, siga as mesmas etapas da resposta principal, coloque o código abaixo em ~/.bash_profile

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

Solução 2

Você deve tentar atualizar a versão git para a mais recente para que funcione.

Resposta

A maioria dos usuários terá git instalado como parte da linha de comando xcode ferramentas em /usr/bin/git e bash completio n regras para git estarão disponíveis em /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash.

Neste caso, não há necessidade de instalar o git do Homebrew ou as regras de conclusão do git de origem de raw.githubusercontent.com. Basta criar um link simbólico da seguinte forma:

cd /usr/local/etc/bash_completion.d/ ln -s /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash git 

Nota: certifique-se de “ter instalado e configurado o pacote bash-completion de Homebrew.

Resposta

Para macOS Catalina +, em zsh:

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

Em seguida, atualize seu ~/.zshrc com:

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

Resposta

Localize seu .bashrc arquivo.

Abra-o e adicione-o linha na parte inferior:

source /etc/bash_completion.d/git

Comentários

  • Eu não ‘ Não tenha nada em uma pasta /etc/bash_completion.d/, em um sistema relativamente novo (OSX 10.10.3).
  • Tente criar isso.
  • Não bash_completion, git_completion que faz coisas diferentes.
  • @MichaelDurrant Funciona. Confie em mim.;) prowrestlingtees.com / media / catalog / product / cache / 1 / image / …
  • @crmpicco Você poderia fornecer instruções para criar /etc/bash_completion.d/git? Isso tornaria sua resposta mais valiosa.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *