Adicionando Git-Bash ao novo Terminal do Windows

206

Estou tentando adicionar um novo terminal (Git Bash) ao novo Terminal do Windows, mas não consigo fazê-lo funcionar.

Eu tentei mudar a commandlinepropriedade na profilesmatriz para, git-bash.exemas sem sorte.

Alguém tem uma idéia de como fazer isso funcionar?

Mendy
fonte
2
Explicado: donovanbrown.com/post/…
Pawel Zentala 08/07/19

Respostas:

302

Visão geral

  1. Abra as configurações com ctrl + ,
  2. Você deseja anexar uma das opções de perfis abaixo (dependendo da versão do git que você instalou) à "list":parte do settings.jsonarquivo

    {
        "$schema": "https://aka.ms/terminal-profiles-schema",
    
        "defaultProfile": "{00000000-0000-0000-ba54-000000000001}",
    
        "profiles":
        {
            "defaults":
            {
                // Put settings here that you want to apply to all profiles
            },
            "list":
            [
                <put one of the configuration below right here>
            ]
        }
    }
    

Opções de perfil

1. Git para Windows

    {
        "guid": "{00000000-0000-0000-ba54-000000000002}",
        "acrylicOpacity" : 0.75,
        "closeOnExit" : true,
        "colorScheme" : "Campbell",
        "commandline" : "\"%PROGRAMFILES%\\git\\usr\\bin\\bash.exe\" -i -l",
        "cursorColor" : "#FFFFFF",
        "cursorShape" : "bar",
        "fontFace" : "Consolas",
        "fontSize" : 10,
        "historySize" : 9001,
        "icon" : "ms-appx:///ProfileIcons/{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.png",
        "name" : "Bash",
        "padding" : "0, 0, 0, 0",
        "snapOnInput" : true,
        "startingDirectory" : "%USERPROFILE%",
        "useAcrylic" : true
    },

2. Git para Windows a partir do Scoop

Se você estiver usando colher

    {
        "guid": "{00000000-0000-0000-ba54-000000000001}",
        "acrylicOpacity" : 0.75,
        "closeOnExit" : true,
        "colorScheme" : "Campbell",
        "commandline" : "\"%UserProfile%\\scoop\\apps\\git\\current\\usr\\bin\\bash.exe\" -i -l",
        "cursorColor" : "#FFFFFF",
        "cursorShape" : "bar",
        "fontFace" : "Consolas",
        "fontSize" : 10,
        "historySize" : 9001,
        "icon" : "ms-appx:///ProfileIcons/{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.png",
        "name" : "Bash",
        "padding" : "0, 0, 0, 0",
        "snapOnInput" : true,
        "startingDirectory" : "%USERPROFILE%",
        "useAcrylic" : true
    },

Notas

  • faça o seu próprio a guidpartir de https://github.com/microsoft/terminal/pull/2475, isso não será mais gerado.
  • o guidpode ser usado no globals> defaultProfilepara que você possa pressionar você pode pressionar CtrlShiftT ou iniciar um terminal do Windows e ele iniciará o bash por padrão
"defaultProfile" : "{00000000-0000-0000-ba54-000000000001}",
  • -i -lpara garantir que ele .bash_profileseja carregado
  • use variáveis ​​de ambiente para que possam mapear corretamente para diferentes sistemas.
  • alvo git\bin\bash.exepara evitar a desova fora de processos adicionais que economiza cerca de 10 MB por processo de acordo com o processo Explorador comparação com a utilização bin / bash ou git-festa

Eu tenho minha configuração que usa o Scoop em https://gist.github.com/trajano/24f4edccd9a997fad8b4de29ea252cc8

Archimedes Trajano
fonte
2
Observe que o bash.exe está no git \\ bin, não diretamente no diretório Git, ao contrário do git-bash.exe. Isso me tropeçou no começo.
Mike Henry
70
se você deseja adicionar o ícone correto, é assim que eu defino o campo de ícone para: #"icon" : "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico"
Chris Sandvik
1
Eu realmente usar um ícone personalizado icons8.com/icon/set/console/office mas é uma boa dica se você quiser que o ícone
Archimedes Trajano
1
Estava faltando as opções `-i -l` para o bash_profile ser carregado. Obrigado.
ImAtWar 13/10/19
34
E apenas para adicionar ao comentário de @ChrisSandvik, o ícone também pode ser referenciado desta forma: #"icon" : "%PROGRAMFILES%\\git\\mingw64\\share\\git\\git-for-windows.ico"
Julian
63

Existem abaixo coisas para fazer.

  1. Verifique se seu gitcomando pode ser executado com êxito no CMD

Isso significa que você precisa adicionar o gitcaminho ao instalar o git ou adicioná-lo ao ambiente do sistema posteriormente.

insira a descrição da imagem aqui

  1. Atualize o arquivo de configuração profile.json

Abra Settings, adicione o seguinte trecho dentro da palavra profiles:

        { 
            "tabTitle": "Git Bash",
            "acrylicOpacity" : 0.75, 
            "closeOnExit" : true, 
            "colorScheme" : "Campbell", 
            "commandline" : "C:/Program Files/Git/bin/bash.exe --login", 
            "cursorColor" : "#FFFFFF", 
            "cursorShape" : "bar", 
            "fontFace" : "Consolas", 
            "fontSize" : 12, 
            "guid" : "{14ad203f-52cc-4110-90d6-d96e0f41b64d}", 
            "historySize" : 9001, 
            "icon": "ms-appdata:///roaming/git-bash_32px.ico",
            "name" : "Git Bash", 
            "padding" : "0, 0, 0, 0", 
            "snapOnInput" : true, 
            "useAcrylic" : true 
        }

O ícone pode ser obtido aqui: git-bash_32px.ico

Você pode adicionar ícones para Tab a este local:

%LOCALAPPDATA%\packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState

Coloque PNG / ícones 32x32 nessa pasta e, em seguida, profile.jsonvocê poderá referenciar o recurso de imagem com o caminho que começa com ms-appdata: //.

Observe que, verifique se Guidestá correto e se corresponde às configurações corretas correspondentes.

  1. O teste git bash funciona bem em Windows Terminal

O resultado final está abaixo: insira a descrição da imagem aqui

Bravo Yeung
fonte
@Mendy FYI, desejo que seja útil para você.
Bravo Yeung
27
Você também pode obter o ícone do 'C: \\ Program Files \\ Git \\ mingw64 \\ share \\ git \\ git-for-windows.ico'
Mendy
Obrigado por mostrar que as barras funcionam no parâmetro commandLine, o que facilita a digitação do comando.
perfil completo de Jim Raden
Existe uma maneira de não fazê-lo ir direto para / c / windows / system32?
Brooklyn
Obrigado ... a resposta marcada não funcionou para mim por algum motivo, mas esta funcionou. Eu tenho o meu git instalado em uma partição diferente, portanto as variáveis ​​de ambiente eram um problema. Esta resposta tem menos informações, mas é muito direta para alcançar a meta.
Felipe Correa
58

Esta é a resposta completa ( GitBash + esquema de cores + ícone + menu de contexto )

1) Defina o perfil padrão:

"globals" : 
{
    "defaultProfile" : "{00000000-0000-0000-0000-000000000001}",
    ...

2) Adicionar perfil GitBash

"profiles" : 
[
    {
        "guid": "{00000000-0000-0000-0000-000000000001}",
        "acrylicOpacity" : 0.75,
        "closeOnExit" : true,
        "colorScheme" : "GitBash",
        "commandline" : "\"%PROGRAMFILES%\\Git\\usr\\bin\\bash.exe\" --login -i -l",
        "cursorColor" : "#FFFFFF",
        "cursorShape" : "bar",
        "fontFace" : "Consolas",
        "fontSize" : 10,
        "historySize" : 9001,
        "icon" : "%PROGRAMFILES%\\Git\\mingw64\\share\\git\\git-for-windows.ico", 
        "name" : "GitBash",
        "padding" : "0, 0, 0, 0",
        "snapOnInput" : true,
        "startingDirectory" : "%USERPROFILE%",
        "useAcrylic" : false        
    },

3) Adicionar esquema de cores GitBash

"schemes" : 
[
    {
        "background" : "#000000",
        "black" : "#0C0C0C",
        "blue" : "#6060ff",
        "brightBlack" : "#767676",
        "brightBlue" : "#3B78FF",
        "brightCyan" : "#61D6D6",
        "brightGreen" : "#16C60C",
        "brightPurple" : "#B4009E",
        "brightRed" : "#E74856",
        "brightWhite" : "#F2F2F2",
        "brightYellow" : "#F9F1A5",
        "cyan" : "#3A96DD",
        "foreground" : "#bfbfbf",
        "green" : "#00a400",
        "name" : "GitBash",
        "purple" : "#bf00bf",
        "red" : "#bf0000",
        "white" : "#ffffff",
        "yellow" : "#bfbf00",
        "grey" : "#bfbfbf"
    },  

4) Para adicionar um menu de contexto com o botão direito do mouse "Windows Terminal Here"

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows terminal here"
"Icon"="C:\\Users\\{YOUR_WINDOWS_USERNAME}\\AppData\\Local\\Microsoft\\WindowsApps\\{YOUR_ICONS_FOLDER}\\icon.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="\"C:\\Users\\{YOUR_WINDOWS_USERNAME}\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\""
  • substitua {YOUR_WINDOWS_USERNAME}
  • crie uma pasta de ícones, coloque o ícone lá e substitua {YOUR_ICONS_FOLDER}
  • salve isso em um arquivo qualquer_filename.reg e execute-o.
Altin
fonte
2
Por que você usa a versão MSYS em Git\\usr\\bin\\bash.exevez da versão MINGW padrão do Git for Windows Git\\bin\\bash.exe?
Keith Russell
1
@KeithRussell Eu realmente não notei nenhum tempo lento, mas se eu perceber mais tarde, posso testar entre eles.
Altin
2
Doce! Simplesmente copiado e colado. Ícones funcionam, cores funcionam, perfeitas.
Corepuncher
2
@KeithRussell Eu investiguei e encontrei stackoverflow.com/a/56844443/8874388 e posso confirmar o que diz. bin\bash.exeé um pequeno lançador de 43kb para usr\bin\bash.exe(2 mb). Basicamente, como um link simbólico, apenas por conveniência (a binpasta contém bash, sh e git). Em outras palavras, não há diferença. Não sei por que eles se preocuparam em criar a binversão da pasta. Talvez por PATHmotivos variáveis herdados (para não infectar o caminho com ls.exe, cat.exe etc.). Mas sim, devemos usar usr/bin/bash.exepara evitar o bin/bash.exeinvólucro inútil .
Mitch McMabers 06/12/19
1
@KeithRussell Além disso, se você clicar com o botão direito do mouse no cabeçalho da coluna na guia Gerenciador de Tarefas do Windows - Detalhes, em Selecionar colunas e ativar a coluna "Linha de comando", poderá ver que Git\usr\bin\bash.exeé iniciado sem argumentos adicionais. Portanto, a única coisa potencial que o Git\bin\bash.exewrapper faz é injetar variáveis ​​de ambiente antes do lançamento, mas acho que a única coisa que injeta é a $MSYSTEM = MINGW64variável que faz com que o prompt do PS1 tenha um título diferente, mas duvido que injete qualquer outra coisa, pois tudo funciona corretamente ao iniciar um dos binários.
Mitch McMabers 07/12/19
7

Mude o parâmetro profiles para "commandline": "%PROGRAMFILES%\\Git\\bin\\bash.exe -l -i"

Isso funciona para mim e permite que meus scripts de preenchimento automático de alias .bash_profile sejam executados.

Orbittman
fonte
6

Se você deseja exibir um ícone e está usando um tema escuro. O que significa que o ícone fornecido acima não parece ótimo. Então você pode encontrar o ícone aqui

C:\Program Files\Git\mingw64\share\git\git-for-windows Eu copiei para.

%LOCALAPPDATA%\packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState

e nomeou-o git-bash_32pxcomo sugerido acima.

Controle a opacidade com CTRL + SHIFT + rolagem.

        {
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "Campbell",
            "commandline" : "\"%PROGRAMFILES%\\git\\usr\\bin\\bash.exe\" -i -l",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "guid" : "{73225108-7633-47ae-80c1-5d00111ef646}",
            "historySize" : 9001,
            "icon" : "ms-appdata:///roaming/git-bash_32px.ico",
            "name" : "Bash",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "useAcrylic" : true
        },
Sigex
fonte
4

Outro item a ser observado - em settings.json, descobri se você não usa "commandline": "C: / Arquivos de Programas / Git / bin / bash.exe"

e use: "commandline": "C: / Arquivos de Programas / Git / git-bash.exe"

o shell do Git será aberto em uma janela independente fora do Terminal do Windows, e não em uma guia - que não é o comportamento desejado. Além disso, a guia no Terminal do Windows que abrir também precisará ser fechada manualmente, pois exibirá informações de saída do processo - [processo encerrado com o código 3221225786] etc.

Pode salvar alguém de dor de cabeça

AB1
fonte
4

Como a maioria das respostas mostra muita configuração que não está relacionada ou não mostra a configuração, aqui está minha própria resposta que tenta ser mais focada. Baseia-se principalmente na resposta de Archimedes Trajano e na referência de configurações de perfil .

Passos

  1. Abra o PowerShell e insira [guid]::NewGuid()para gerar um novo GUID. Vamos usá-lo na etapa 3.

    > [guid]::NewGuid()
    
    Guid
    ----
    a3da8d92-2f3f-4e36-9714-98876b6cb480
  2. Abra as configurações do Terminal do Windows . ( CTRL+ ,)

  3. Adicione o seguinte objeto JSON a profiles.list. Substitua guidpelo que você gerou na etapa 1.

    {
      "guid": "{a3da8d92-2f3f-4e36-9714-98876b6cb480}",
      "name": "Git Bash",
      "commandline": "\"%PROGRAMFILES%\\Git\\usr\\bin\\bash.exe\" -i -l",
      "icon": "%PROGRAMFILES%\\Git\\mingw64\\share\\git\\git-for-windows.ico",
      "startingDirectory" : "%USERPROFILE%"
    },

Notas

  • Atualmente, existe um problema em que você não pode usar as teclas de seta (e algumas outras teclas). Parece funcionar com a versão mais recente de pré-visualização. ( edição # 6859 )

  • A especificação "startingDirectory" : "%USERPROFILE%"não deve ser necessária de acordo com a referência . No entanto, se eu não o especificar, o diretório inicial será diferente dependendo de como eu iniciei o terminal inicialmente.

  • As configurações que se aplicam a todos os terminais podem ser especificadas em profiles.defaults.

  • Eu recomendo para definir "antialiasingMode": "cleartype"em profiles.defaults. Você precisa removê-lo "useAcrylic"(se o adicionou como sugerido por outras respostas) para fazê-lo funcionar. Melhora a qualidade da renderização do texto. No entanto, você não pode ter fundo transparente sem useAcrylic. Veja a edição # 1298 .

JojOatXGME
fonte
0

Eu fiz o seguinte:

  1. Adicione "% programfiles% \ Git \ Bin" ao seu PATH
  2. No profiles.json, defina a linha de comando desejada como "commandline": "sh --cd-to-home"
  3. Reinicie o terminal do Windows

Funcionou para mim.

LFrigoDeSouza
fonte
0

Adicionar "%PROGRAMFILES%\\Git\\bin\\bash.exe -l -i"não funciona para mim. Por causa do símbolo de espaço (que é separador em cmd) no terminal% PROGRAMFILES% executa o comando em "C:\Program"vez de "C:\Program Files\Git\bin\bash.exe -l -i". A solução deve ser algo como adicionar aspas no arquivo json, mas não descobri como. A única solução é adicionar "C: \ Arquivos de Programas \ Git \ bin" a% PATH% e gravar "commandline": "bash.exe"em profiles.json

Grigoriy
fonte
Eu usei "commandline" : "C:\\PROGRA~1\\Git\\bin\\bash.exe",. Não há necessidade de modificar o meu caminho
PTRK
Isso não funciona para mim. Ele lança cmd. Mas se eu digitar a "C:\\PROGRA~1\\Git\\bin\\bash.exe"janela do terminal aberta, o bash será iniciado.
Grigoriy
você precisa de um conjunto extra de aspas escapadas em torno de% PROGRAMFILES%. por exemplo:"commandline" : "\"%PROGRAMFILES%\\git\\usr\\bin\\bash.exe\" -i -l"
BJury 18/10/19