Como adicionar mais comandos ao Git Bash?


63

Estou trabalhando na máquina windows e uso o shell bash que vem com o Git. Mas existem muitos utilitários que estão faltando nesta versão do bash shell.

Como posso instalar mais comandos neste shell?


3
O que você tentou?
030

3
many utilities are missing in this version of bash shell. Por favor, adicione quais comandos estão faltando que você gostaria de usar.
030

3
Consulte serverfault.com/a/872557/212162 para obter uma maneira muito mais recente e fácil de usar utilitários que não estão incluídos por padrão.
nextgentech

Respostas:


16

É provável que você esteja usando duas versões do Git - a distribuição msysgit ou Cygwin .

Instalando utilitários adicionais para Cygwin

Embora você possa ter instalado o Git apenas como parte da instalação do Cygwin (se você usou o Cygwin), o Cygwin possui um programa chamado setup.exe, que pode ser usado para adicionar pacotes. Basicamente, tudo o que você precisa fazer é executar setup.exee escolher quais programas você deseja instalar quando chegar à janela Selecionar Pacotes . A introdução aqui fornece uma boa visão geral com imagens que detalham o processo.

O instalador do Cygwin é inteligente o suficiente para descobrir que você possui uma instalação preexistente e adicionará pacotes à sua instalação (em vez de desativá-la e começar de novo).

MSYS

A outra versão do Git que você provavelmente está usando (se não o Cygwin) é msysgit. Como o msysgit instala um ambiente Unix mínimo que não é realmente compatível com o MinGW, você precisará instalar o pacote MinGW ao lado do msysgit. A página Introdução ao MinGW fornece uma visão geral detalhada de como instalar o MinGW - como não tenho experiência com o MinGW pessoalmente, tudo o que posso fazer é encaminhá-lo às instruções.

Você precisará migrar sua instalação do msysgit para o MinGW. Isso pode ser feito fazendo o seguinte (extraído daqui ). Após a sequência a seguir, o MinGW deverá encontrar a instalação do Git.

cd GITDIR # Where GITDIR is wherever inside Program Files you put Git
cp bin/git* /MINGW/bin # Where MINGW is wherever you put MinGW
cp -r libexec/git* /MINGW/libexec
cp -r share/git* /MINGW/share

2
Para quem se perguntar, não tente usar o instalador do cygwin no pacote msysgit. Funciona parcialmente ... mas, ao resolver dependências, ele substituirá o sh.exe (que altera significativamente o seu ambiente).
Chris Betti

5
Como sei se meu git-bash usa cygwin ou msys?
Lmo

7
Eu instalei a partir de git-scm.com/download/win que é msysgit ou cygwin? EDIT Descobri. Em vez de excluir este comentário, direi que é msysgit.
Expiação limitada

3
@LimitedAtonement - Diga também como você descobriu isso, para outros leitores (como eu) que fizeram a mesma pergunta.
Ioanna 12/09

4
Você pode dizer o que instalou executando uname -ono terminal bash.
Cliff Armstrong

5

Com as instalações recentes do Git for Windows , a instalação de scripts e programas shell adicionais é bastante fácil.

Eu recomendo instalar o git usando o chocolatey choco install git , porque você pode atualizar o git (e todas as outras ferramentas instaladas com o chocolatey) executando choco upgrade all.

Simplesmente coloque os executáveis ​​em C:\Program Files\Git\usr\bin( %ProgramFiles%\Git\usr\bin).

Exemplo para git-fresh

Copie o arquivo git-fresh para C:\Program Files\Git\usr\bin.

Exemplo para adr-tools

  1. Faça o download de um pacote zip na página de lançamentos
  2. Descompacte o pacote
  3. Copie tudo de src/paraC:\Program Files\Git\usr\bin

4

Se você estiver usando o msysgit, uma opção simples é instalar o MinGW e adicionar o caminho MINGW ao arquivo .bashrc que você está usando para a instalação do Git:

    PATH=$PATH:/MINGW/msys/1.0/bin

... onde MINGW é onde você instalou o MinGW

Dessa forma, você pode usar as ferramentas MinGW diretamente da instalação do Git bash e, se precisar de outra ferramenta, basta instalá-lo no MinGW.


1

Você pode fazer download de unidades adicionais do Unix Wget, Hugo, Xpdf, make, Nanoaqui: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058

Wget

  • Faça o download do último binário wget para windows do eternallybored (eles estão disponíveis como um zip com documentação ou apenas um exe)
  • Se você fez o download do zip, extraia tudo (se o utilitário zip do Windows apresentar um erro, use o 7-zip ).
  • Renomeie o arquivo wget64.exepara, wget.exese necessário.
  • wget.exepara o seu Git\mingw64\bin\.

Nota: notei alguns erros ao usar o Wget no Git Bash para criar arquivos WARC. Para um uso mais complexo do Wget, considere o Cygwin .

Hugo

O gerador de site estático Hugo pode ser baixado como um binário e não possui um instalador. Soltá-lo binfacilmente adiciona-o ao caminho do Git Bash. Pegue a versão do Windows de 64 bits na página de lançamentos . Descompacte o download e copie hugo.exepara o seu Git\mingw64\bindiretório.

Xpdf

Xpdf é um utilitário útil para manipular arquivos PDF.

  • Baixe a versão do Windows "Xpdf tools" .
  • Extrair zip.
  • Copie o conteúdo xpdf-tools-win-4.00\bin64\para o seu Git\mingw64\bin\.
  • Verifique os documentos para começar com ferramentas como pdftotexte pdftopng.

faço

  • Vá para ezwinports .
  • Download make-4.1-2-without-guile-w32-bin.zip(obtenha a versão sem dolo).
  • Extrair zip.
  • Copie o conteúdo para Git\mingw64\mesclar as pastas, mas NÃO substitua / substitua os arquivos existentes.

Nano

A partir de 2018, as versões recentes do Git Bash incluem o Nano, então isso é desnecessário!

  • Baixe o binário do Nano na página de suporte do Nano win32 . Você só precisa do .exearquivo, que é nomeado nano-git-0d9a7347243.exe(até o momento em que este documento foi escrito).
  • Renomeie o arquivo para nano.exee copie para o mingw64\bindiretório
  • Esta versão do Nano não funcionará apenas com o Git Bash, mas pode ser chamada usando winpty, por exemplo winpty nano test.txt,.

1

Encontrei hoje uma resposta bastante simples que funcionou rsync.

  1. Instale o git bash para Windows
  2. Baixe a rsyncpartir de futureware.at *
  3. Extrair para qualquer lugar, eu escolho C:\rsync-3.1.2-2-x86_64.pkg
  4. Adicione a pasta bin ao topo do caminho do sistema

* Não sei quem está por trás do futureware.at, eu preferiria vincular a uma fonte mais primária.


@ Mike sua resposta é semelhante, exceto que eu não instalar cygwin64
geneorama

1

Tentei o seguinte e instalei o emacs no git-bash .. 1. Instale o msys2 em algum lugar (não precisa ser o mesmo computador). 2. Em msys2, execute o seguinte:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. Copie emacs.tar.gzpara onde você pode acessar a partir do git-bash e, em seguida, em git-bash:

    tar zxf emacs.tar.gz -C / emacs

Isso é tudo, boa sorte.

Após o primeiro post, tentei outro computador, mas não estava funcionando. Acontece que algumas dlls estão ausentes no git-bash. Depois, testei em uma máquina virtual limpa com as seguintes etapas:

  1. Instale o msys2-x86_64-20180531 e o Git-2.19.1-64-bit .

  2. Atualize o msys2, abra o console do msys64 e execute:

    pacman -Syyu
    

    Feche o console do msys64 quando solicitado e execute o comando acima novamente.

  3. Obtenha os arquivos emacs como as etapas anteriores (execute o seguinte no msys64):

    cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
    mv emacs.tar.gz /c/tmp
    

    ps: Uma vez tentei as etapas acima em / d / tmp em vez de / tmp e não consegui instalar o emacs nele.

  4. Abra o git-bash e extraia os arquivos emacs:

    cd /c/tmp
    tar zxf emacs.tar.gz -C /
    

    Ele reclamará da falta da biblioteca compartilhada "?" em tentar executar o emacs agora. O "?" não será revelado a nenhum legível

  5. Volte para msys64 e obtenha as dlls msys2:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. No git-bash, compare dlls com msys:

    cd /c/tmp
    git init
    git add 1.txt && git commit
    ls --color=never /bin/*.dll | sed 's#\*$##g' > /c/tmp/1.txt
    git diff 1.txt | grep '^-' | sed '1d' | sed 's#^-/bin/##g' > diff_dlls.txt
    

    No meu caso, existem 26 dlls em diff_dlls.txt.

  7. Copie as DLLs do msys64 para o git-bash:

    No msys64:

    mkdir /c/tmp/dlls
    cat /c/tmp/diff_dlls.txt | xargs -I {} cp /bin/{} /c/tmp/dlls
    

    No git-bash:

    cp /c/tmp/dlls/* /bin
    
  8. Tudo pronto, agora o emacs roda em git-bash. Algumas das 26 dlls podem não ser necessárias, mas eu prefiro economizar meu tempo em vez de espaço em disco.


0

Ao usar o Git bash para Windows (MinGW64), era muito difícil obter o rsync para ser adicionado a ele. continuou recebendo erro: dup () in / out / err falhou

Em vez disso, o uso do Cygwin funcionou eventualmente.

Etapas que tomei para usar o rysnc no Gitbash para Windows

  1. Instale o gitbash para Windows
  2. Instale o cygwin64
  3. Adicione o caminho cygwin à variável de caminho do Windows

    Windows-> Sistema-> Configurações avançadas-> Variáveis ​​de Ambiente

    Adicione um caminho para C: \ cygwin64 \ bin \

  4. Feche e abra novamente o gitbash Agora, o gitbash encontrará o rsync.exe no cygwin \ bin
  5. Eu estava recebendo um erro de versão incompatível para cygwin1.dll

    *** erro fatal - incompatibilidade de base do cygheap detectada

  6. Embora alguns tenham dito que uma reinicialização corrigirá isso, isso não ocorreu.
  7. Para resolver o erro de versão, copiei o diretório cygwin \ bin de uma versão mais antiga do cygwin - a versão 1.7.30 funcionou

Não faça isso. Consulte Usar o executável cygwin no script git bash para saber o porquê.
MikeJRamsey56

0

Pode-se estender o número de recursos no git-bash criando scripts e chamá-los definindo-os no ~/.bash_profilearquivo.

Exemplo

Se alguém quiser usar o watchcomando, esse script poderá ser adicionado ao ~/.bash_profile:

https://gist.github.com/espaciomore/28e24ce4f91177c0964f4f67bb5c5fda

ARGS="${@}"
clear;
while(true); do
  OUTPUT=`$ARGS`
  clear
  echo -e "${OUTPUT[@]}"
done

e envolva-o dentro de uma função:

watch() {
  ARGS="${@}"
  clear;
  while(true); do
    OUTPUT=`$ARGS`
    clear
    echo -e "${OUTPUT[@]}"
  done
}

Assim que alguém salva o arquivo e executa source ~/.bash_profile, deve poder assistir à saída dos comandos.



-1

adicionar rsync

Você pode baixar o arquivo rsync diretamente do mysys . Basta pesquisar na página pelo rsync e escolher aquele com a data mais recente / número da versão mais recente.
Descompacte este arquivo ( rsync-3.1.3-1-x86_64.pkg.tar.xz) via

tar -xf rsync-3.1.3-1-x86_64.pkg.tar.xz

Em seguida, copie o rsync em ./usr/bin/rsync.exe e cole-o na pasta / usr / bin da sua instalação do Git.
Na minha máquina, isso éC:/Program Files/Git/usr/bin/

Você pode ver o local da sua instalação do Git via

where git

Aqui está um repositório essencial da hisplan que possui instruções junto com um link para a versão 3.1.3-1 no rsync https://gist.github.com/hisplan/ee54e48f17b92c6609ac16f83073dde6 .

Nota: Não foi possível descompactar o rsync-3.1.3-1-x86_64.pkg.tar.xzarquivo diretamente na pasta Git, porque as permissões não o permitiam. E Git Bash não tem sudo.
Mas eu poderia descompactá-lo diretamente na minha pasta Downloads, sem problemas.
Tudo bem, porque você só precisa do rsync.exearquivo de qualquer maneira.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.