Como iniciar o Git Bash na linha de comando do DOS?

106

Tenho o que espero ser uma pergunta simples, mas ainda não consegui encontrar a resposta. Eu gostaria de iniciar o Git Bash de um arquivo de lote DOS. Aqui está o que tentei até agora:

  1. Lançado Git Bash a partir do botão Iniciar do Win 7
  2. Use CTRL + ALT + DEL para identificar o processo como "sh.exe"
  3. Sh.exe lançado do arquivo em lote usando o comando start

    start sh.exe
    

No entanto, isso não inicia o ambiente Git Bash completo. Git Bash normalmente tem "mingw32" na barra de título, mas sh.exe tem um caminho completo para ... Git\bin\sh.exe. Parece-me que existem algumas sobreposições ou dependências das quais não estou ciente, que também precisam ser carregadas (puxadas? Importadas?).

Este foi um dos principais resultados que encontrei ao pesquisar na web, mas não faz todo o sentido para mim e não tenho certeza se se aplica exatamente à minha situação:

Executando git da linha Windows Cmd: Onde estão os arquivos-chave?

Sou um iniciante no mundo dos scripts em lote do DOS.

Eric Hepperle - CodeSlayer2010
fonte
1
Bem, não é realmente a linha de comando do DOS, a menos que: (a) Você encontrou algum tipo de anomalia de tempo e está usando o Windows 9x / ME, onde command.comestá o único shell incluído com o sistema operacional (b) Você está em um 32- bit sistema NT e invocou a command.comsi mesmo ou um programa antigo fez isso para você. Consulte Qual é a diferença entre CMD e prompt de comando no Windows? para mais informações.
SamB de

Respostas:

125

Se você deseja iniciar a partir de um arquivo em lote:

  • para x86

    start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login
    
  • para x64

    start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login
    
Endoro
fonte
Obrigado @Endoro! Embora a resposta de @Klas Mellbourn tenha sido correta para o Powershell, a sua é mais correta, já que estou executando a partir de um arquivo batch DOS. A adição da diretiva "start" faz com que o programa seja executado de forma assíncrona, que é exatamente o que eu preciso! Afirmativo!
Eric Hepperle - CodeSlayer2010
14
Existe uma maneira de digitar e executar um comando na janela de lote do Git depois que ele é aberto de dentro do arquivo de lote?
Nick
1
@OviC Tem certeza que sua edição está correta? "Arquivos de programas (x86)" só existe na arquitetura x64 para programas de 32 bits.
Drunix de
@Drunix você está certo, não há caminho para "Arquivos de Programas (x86) \" em sistemas x86. Eu fiz uma reversão. Obrigado.
Endoro 01 de
E se não estiver instalado na unidade do sistema? E se não estiver instalado nos arquivos do programa?
Michael Kruglos
44

Não tenho certeza do que você quer dizer com "ambiente Git Bash completo", mas recebo um prompt interessante se o fizer

"C:\Program Files\Git\bin\sh.exe" --login

Em PowerShell

& 'C:\Program Files\Git\bin\sh.exe' --login

A --loginopção faz o shell executar os arquivos de inicialização do shell de login .

Klas Mellbourn
fonte
Obrigado @Klas Mellbourn. Sua resposta é boa para o Powershell, mas sem a adição da diretiva "start" como na resposta de Endoro, ele interrompe a execução do próximo programa até que o shell seja encerrado, o que não é o comportamento desejado, caso contrário, eu teria votado em você.
Eric Hepperle - CodeSlayer2010
Eu uso o Console2 para criar janelas cmde isso causa um comportamento estranho. Coloquei isso em um arquivo .bat e agora está tudo bem:@"%SYSTEMDRIVE%\Program Files\Git\bin\bash.exe" --login
Grault
25

Prefiro usar git-bash.exe em vez de sh.exe.

start "" "%ProgramFiles%\Git\git-bash.exe" -c "tail -f /c/Windows/win.ini"

Você pode parar de fechar a janela quando ligar /usr/bin/bash --login -ino final;

start "" "%ProgramFiles%\Git\git-bash.exe" -c "echo 1 && echo 2 && /usr/bin/bash --login -i"

Observação: não tenho certeza se essa é uma boa maneira :)

Kujiy
fonte
4
Boa resposta, mas a janela do git-bash fecha imediatamente. Você sabe como desativar o fechamento automático após a execução do comando?
Marcos
@Mark Obrigado Mark. Eu adicionei um exemplo à minha resposta acima. Infelizmente, não tenho certeza de como devemos fazer isso da maneira certa, porque eu não sou uma pessoa do Windows :)
kujiy
1
[code] start "" "% ProgramFiles% \ Git \ git-bash.exe" [/ code] funciona muito bem!
PauAI de
@PauAI 2018 agora ... Eu tentei start "" "%ProgramFiles%\Git\git-bash.exe"em uma linha de comando do administrador, e embora ele traga o Git Bash em uma nova janela, digitando um comando simples como lsresulta em nenhuma saída. Este método não parece permitir a execução de comandos do Linux. ... EDIT: Funcionou, apenas demorou muito (2 minutos) para executar ls. Então, o ls funcionou novamente em menos de 1 segundo. ... esquisito.
Eric Hepperle - CodeSlayer2010
8

Eu prefiro colocar git na variável de ambiente e apenas chamar

c:\Users\[myname]>sh
or 
c:\Users\[myname]>bash

Passos para criar a variável de ambiente (Win7)

  • Na área de trabalho, clique com o botão direito no ícone Computador.
  • Escolha Propriedades no menu de contexto.
  • Clique no link Configurações avançadas do sistema.
  • Clique em Variáveis ​​de ambiente.
  • Na seção Variáveis ​​de usuário, clique no botão NOVO, coloque o nome da variável como GIT_HOME, valor como (pasta-onde-você-instalou-git).

    • para mim foi c:\tools\git, outros talvez tenhamC:\Program Files\Git
  • encontre a PATHvariável de ambiente e selecione-a. Clique em Editar. (Se a variável de ambiente PATH não existir, clique em Novo).

  • Na janela Editar, adicione um novo valor %GIT_HOME%e %GIT_HOME%\bin. Clique OK. Feche todas as janelas restantes clicando em OK.
  • [Certifique-se de fechar o CMD que deseja usar para o git]
  • abra um novo prompt de comando e apenas digite shou bashougit-bash
velho monge
fonte
2
Obrigado! Consegui fazer isso funcionar com GIT_HOME como C:\Program Files\Gite digitar git-bashno CMD. Além disso, estranhamente, embora você só precise digitar PATH para ver seu conteúdo, para ver o conteúdo desta variável personalizada git você deve digitarecho %GIT_HOME%
Eric Hepperle - CodeSlayer2010
Obrigado, esta foi uma grande adição. Para adicionar a isso, quando você tiver a GIT_HOMEvariável e usar o git-bashcomando (ou git-cmd), ela será aberta em uma nova janela. Se você adicionar à variável de ambiente "PATH", ele mudará para a janela existente. Você também pode digitar exit"logout" do git bash e ainda manter o prompt do DOS.
Keith E. Truesdell
4
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login -i

O Git bash será aberto.

user3616334
fonte
3

https://stackoverflow.com/a/33368029/15789

Eu postei uma resposta aqui.

Abra uma janela de comando do Windows e execute este script. Se houver uma mudança em seu diretório de trabalho, ele abrirá um terminal bash em seu diretório de trabalho e exibirá o status atual do git. Ele mantém a janela bash aberta, chamando exec bash.

Se você tiver vários projetos, poderá criar cópias desse script com uma pasta de projeto diferente e chamá-lo de um script de lote principal.

Exceção de tempo de execução
fonte
3

Usei as informações acima para ajudar a criar uma solução mais permanente. O seguinte criará o alias sh que você pode usar para abrir o Git Bash:

echo @start "" "%PROGRAMFILES%\Git\bin\sh.exe" --login > %systemroot%\sh.bat
dpate
fonte
Obrigado dpate! Colei sua instrução echo na linha de comando e executei shuma janela git-bash aberta e consegui executar comandos perfeitamente. Pode adicionar alguns detalhes à sua resposta explicando como isso funciona? Prefiro aprender como funciona a pesca do que pedir que alguém me dê um peixe, e acho que isso vai beneficiar outras pessoas que procuram uma boa resposta. obrigado
Eric Hepperle - CodeSlayer2010
0

A resposta do Endoro envelheceu e não posso comentar;

# if you want to launch from a batch file or the command line:

start "" "%ProgramFiles%\Git\bin\sh.exe" --login
ThaJay
fonte
0

Você pode adicionar o caminho git às variáveis ​​de ambiente

  • Para x86

%SYSTEMDRIVE%\Program Files (x86)\Git\bin\

  • Para x64

%PROGRAMFILES%\Git\bin\

Abra o cmd e escreva este comando para abrir o git bash

sh --login

Você pode ver esta imagem GIF para mais detalhes:

https://media1.giphy.com/media/WSxbZkPFY490wk3abN/giphy.gif

Eng_Farghly
fonte