Aggiunta di Git-Bash al nuovo terminale di Windows


206

Sto cercando di aggiungere un nuovo terminale (Git Bash) al nuovo Terminale di Windows, tuttavia non riesco a farlo funzionare.

Ho provato a cambiare la commandlineproprietà profilesdell'array in git-bash.exema senza fortuna.

Qualcuno ha idea di come farlo funzionare?


Risposte:


302

Panoramica

  1. Apri le impostazioni con ctrl + ,
  2. Ti consigliamo di aggiungere una delle opzioni dei profili di seguito (a seconda della versione di git che hai installato) alla "list":parte del settings.jsonfile

    {
        "$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>
            ]
        }
    }
    

Opzioni del profilo

1. Git per 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 per Windows da Scoop

Se stai usando scoop

    {
        "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
    },

Appunti

  • crea il tuo guidda https://github.com/microsoft/terminal/pull/2475 questo non viene più generato.
  • il guidpuò essere utilizzato in in globals> defaultProfilein modo da poter premere è possibile premere CtrlShiftT o avviare un terminale Windows e, si avvia bash di default
"defaultProfile" : "{00000000-0000-0000-ba54-000000000001}",
  • -i -lper assicurarsi che .bash_profilevenga caricato
  • utilizzare le variabili di ambiente in modo che possano mappare correttamente su sistemi diversi.
  • obiettivo git\bin\bash.exeper evitare la generazione di processi aggiuntivi che consente di risparmiare circa 10 MB per processo secondo Process Explorer rispetto all'utilizzo di bin / bash o git-bash

Ho la mia configurazione che utilizza Scoop in https://gist.github.com/trajano/24f4edccd9a997fad8b4de29ea252cc8


2
Nota che bash.exe si trova in git \\ bin, non direttamente nella directory Git, a differenza di git-bash.exe. Questo mi ha inciampato all'inizio.
Mike Henry,

70
se vuoi aggiungere l'icona corretta, questo è ciò che ho impostato il campo icona su:"icon" : "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico"
Chris Sandvik

1
In realtà uso un'icona personalizzata icons8.com/icon/set/console/office ma è un buon consiglio se vuoi l'icona
Archimedes Trajano,

1
Mi mancavano le opzioni `-i -l` per caricare il file bash_profile. Grazie.
ImAtWar,

34
E solo per aggiungere al commento di @ChrisSandvik, l'icona può anche essere referenziata in questo modo:"icon" : "%PROGRAMFILES%\\git\\mingw64\\share\\git\\git-for-windows.ico"
Julian,

63

Di seguito ci sono cose da fare.

  1. Assicurarsi che il gitcomando possa essere eseguito correttamente in CMD

Ciò significa che è necessario aggiungere gital percorso quando si installa git o aggiungerlo all'ambiente di sistema in un secondo momento.

inserisci qui la descrizione dell'immagine

  1. Aggiorna il file di configurazione profile.json

Apri Settings, aggiungi il seguente frammento all'interno della parola 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 
        }

L'icona può essere ottenuta qui: git-bash_32px.ico

È possibile aggiungere icone per Tab in questa posizione:

%LOCALAPPDATA%\packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState

Inserisci 32x32 PNG / icone in questa cartella, quindi profile.jsonpuoi fare riferimento alla risorsa immagine con il percorso che inizia con ms-appdata: //.

Si noti che, assicurarsi che Guidsia corretto e corrisponda alle configurazioni corrette corrispondenti.

  1. Test git bash funziona bene Windows Terminal

Il risultato finale è di seguito: inserisci qui la descrizione dell'immagine


@Mendy FYI, vorrei che fosse utile per te.
Bravo Yeung,

27
Puoi anche ottenere l'icona da 'C: \\ Programmi \\ Git \\ mingw64 \\ share \\ git \\ git-for-windows.ico'
Mendy,

Grazie per aver dimostrato che le barre in avanti funzionano nel parametro commandLine, il che semplifica molto la digitazione del comando.
Jim Raden,

C'è un modo per non farlo andare direttamente in / c / windows / system32?
Brooklyn,

Grazie ... la risposta contrassegnata non ha funzionato per me per qualche motivo, ma questa ha funzionato. Ho il mio git installato su una partizione diversa, quindi le variabili di ambiente erano un problema. Questa risposta ha meno informazioni ma è molto semplice per raggiungere l'obiettivo.
Felipe Correa,

58

Questa è la risposta completa ( GitBash + combinazione di colori + icona + menu contestuale )

1) Imposta profilo predefinito:

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

2) Aggiungi profilo 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) Aggiungi la combinazione di colori di 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) Per aggiungere un menu contestuale del tasto destro "Terminale di Windows qui"

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\""
  • sostituisci {YOUR_WINDOWS_USERNAME}
  • crea la cartella delle icone, inserisci lì l'icona e sostituisci {YOUR_ICONS_FOLDER}
  • salvalo in un file qualunque_filename.reg ed eseguilo.

2
Perché usi la versione MSYS Git\\usr\\bin\\bash.exeinvece di Git per la versione MINGW predefinita di Windows Git\\bin\\bash.exe?
Keith Russell,

1
@KeithRussell Non ho davvero notato alcun tempo lento, ma se lo faccio in seguito, potrei testare tra di loro.
Altin,

2
Dolce! Semplicemente copiato e incollato. Le icone funzionano, i colori funzionano, perfetti.
Corepuncher il

2
@KeithRussell ho studiato e ho trovato stackoverflow.com/a/56844443/8874388 , e posso confermare quello che dice. bin\bash.exeè un piccolo lanciatore da 43kb per usr\bin\bash.exe(2 mb). Fondamentalmente come un collegamento simbolico, solo per comodità (la bincartella contiene bash, sh e git). In altre parole, non c'è differenza. Non sono sicuro del motivo per cui si sono preoccupati di creare la binversione della cartella. Forse per PATHmotivi variabili legacy (per non infettare il percorso anche con ls.exe, cat.exe ecc.). Ma sì, dovremmo usare usr/bin/bash.exeper evitare l' bin/bash.exeinvolucro inutile .
Mitch McMabers il

1
@KeithRussell Inoltre, se si fa clic con il pulsante destro del mouse sull'intestazione di colonna in Task Manager di Windows - scheda Dettagli e Seleziona colonne e si abilita la colonna "Riga di comando", è possibile vedere che Git\usr\bin\bash.exeviene avviato senza ulteriori argomenti. Quindi l'unica cosa potenziale che fa il Git\bin\bash.exewrapper è iniettare variabili di ambiente prima del lancio, ma penso che l'unica cosa che inietti sia la $MSYSTEM = MINGW64variabile che fa sì che il prompt di PS1 abbia un titolo diverso, ma dubito che inietti qualcos'altro, dal momento che tutto funziona correttamente quando si avvia uno dei binari.
Mitch McMabers il

7

Cambia il parametro profili in "commandline": "%PROGRAMFILES%\\Git\\bin\\bash.exe -l -i"

Questo funziona per me e consente l'esecuzione degli script di completamento automatico alias .bash_profile.


6

Se si desidera visualizzare un'icona e si utilizza un tema scuro. Ciò significa che l'icona fornita sopra non sembra così eccezionale. Quindi puoi trovare l'icona qui

C:\Program Files\Git\mingw64\share\git\git-for-windows L'ho copiato in.

%LOCALAPPDATA%\packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState

e lo ha chiamato git-bash_32pxcome suggerito sopra.

Controlla l'opacità con CTRL + MAIUSC + scorrimento.

        {
            "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
        },

4

Un altro elemento da notare: in settings.json ho scoperto se non si utilizza "commandline": "C: / Programmi / Git / bin / bash.exe"

e invece usa: "commandline": "C: / Programmi / Git / git-bash.exe"

la shell Git si aprirà in una finestra indipendente al di fuori del Terminale di Windows anziché in una scheda, che non è il comportamento desiderato. Inoltre, la scheda nel Terminale di Windows che si apre dovrà anche essere chiusa manualmente in quanto visualizzerà le informazioni di processo in uscita - [processo chiuso con il codice 3221225786] ecc.

Potrebbe salvare qualcuno un po 'di mal di testa


4

Poiché la maggior parte delle risposte mostra molta configurazione non correlata o non mostra affatto la configurazione, ecco la mia risposta che cerca di essere più focalizzata. Si basa principalmente sulla risposta di Archimede Trajano e sul riferimento alle impostazioni del profilo .

passi

  1. Apri PowerShell e inserisci [guid]::NewGuid()per generare un nuovo GUID. Lo useremo al passaggio 3.

    > [guid]::NewGuid()
    
    Guid
    ----
    a3da8d92-2f3f-4e36-9714-98876b6cb480
  2. Apri le impostazioni di Windows Terminal . ( CTRL+ ,)

  3. Aggiungi il seguente oggetto JSON a profiles.list. Sostituisci guidcon quello che hai generato al passaggio 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%"
    },

Appunti

  • Esiste attualmente un problema per cui non è possibile utilizzare i tasti freccia (e alcuni altri tasti). Sembra funzionare con l'ultima versione di anteprima, però. ( numero 6859 )

  • La specifica "startingDirectory" : "%USERPROFILE%"non dovrebbe essere necessaria secondo il riferimento . Tuttavia, se non lo specifico, la directory iniziale era diversa a seconda di come avevo avviato il terminale inizialmente.

  • È possibile specificare le impostazioni applicabili a tutti i terminali profiles.defaults.

  • Vi consiglio di impostare "antialiasingMode": "cleartype"in profiles.defaults. Devi rimuoverlo "useAcrylic"(se l'hai aggiunto come suggerito da altre risposte) per farlo funzionare. Migliora la qualità del rendering del testo. Tuttavia, non è possibile avere uno sfondo trasparente senza useAcrylic. Vedi numero 1298 .


0

Ho fatto come segue:

  1. Aggiungi "% programfiles% \ Git \ Bin" al tuo PERCORSO
  2. Su profiles.json, imposta la riga di comando desiderata come "commandline": "sh --cd-to-home"
  3. Riavvia il terminale di Windows

Ha funzionato per me.


0

L'aggiunta "%PROGRAMFILES%\\Git\\bin\\bash.exe -l -i"non funziona per me. A causa del simbolo dello spazio (che è un separatore in cmd) nel terminale% PROGRAMFILES% esegue il comando "C:\Program"anziché "C:\Program Files\Git\bin\bash.exe -l -i". La soluzione dovrebbe essere qualcosa di simile all'aggiunta di virgolette nel file JSON, ma non ho capito come. L'unica soluzione è aggiungere "C: \ Programmi \ Git \ bin" a% PATH% e scrivere "commandline": "bash.exe"in profiles.json


Ho usato "commandline" : "C:\\PROGRA~1\\Git\\bin\\bash.exe",. Non è necessario modificare il mio percorso
PTRK

Questo non funziona per me. Lancia cmd. Ma se "C:\\PROGRA~1\\Git\\bin\\bash.exe"digito la finestra del terminale aperta, inizia bash.
Grigoriy,

è necessario un set aggiuntivo di virgolette di escape attorno a% PROGRAMFILES%. ad esempio:"commandline" : "\"%PROGRAMFILES%\\git\\usr\\bin\\bash.exe\" -i -l"
Giuria
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.