การเพิ่ม Git-Bash ให้กับ Windows Terminal ใหม่


205

ฉันกำลังพยายามเพิ่มเทอร์มินัลใหม่ (Git Bash) ใน Windows Terminal ใหม่ แต่ฉันไม่สามารถใช้งานได้

ฉันพยายามเปลี่ยนcommandlineคุณสมบัติในprofilesอาร์เรย์เป็นgit-bash.exeแต่ไม่มีโชค

ใครบ้างมีความคิดวิธีการทำงานนี้หรือไม่


2
อธิบาย: donovanbrown.com/post/...
Pawel Zentala

คำตอบ:


301

ภาพรวม

  1. เปิดการตั้งค่าด้วย ctrl + ,
  2. คุณจะต้องการผนวกหนึ่งในตัวเลือกโปรไฟล์ด้านล่าง (ขึ้นอยู่กับเวอร์ชันของ git ที่คุณติดตั้งไว้) ใน"list":ส่วนของsettings.jsonไฟล์

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

ตัวเลือกโปรไฟล์

1. Git สำหรับ 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 สำหรับ Windows จาก 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
    },

หมายเหตุ

  • ทำให้ตัวคุณเองguidเป็นhttps://github.com/microsoft/terminal/pull/2475สิ่งนี้ไม่ได้ถูกสร้างขึ้นอีกต่อไป
  • guidสามารถใช้ในglobals> defaultProfileเพื่อให้คุณสามารถกดคุณสามารถกดCtrlShiftT หรือเริ่มขั้ว Windows และมันจะเริ่มต้นขึ้นทุบตีโดยค่าเริ่มต้น
"defaultProfile" : "{00000000-0000-0000-ba54-000000000001}",
  • -i -lเพื่อให้แน่ใจว่า.bash_profileได้รับการโหลด
  • ใช้ตัวแปรสภาพแวดล้อมเพื่อให้สามารถแมปไปยังระบบอื่นได้อย่างถูกต้อง
  • เป้าหมายgit\bin\bash.exeเพื่อหลีกเลี่ยงการวางไข่ในกระบวนการเพิ่มเติมซึ่งจะช่วยประหยัดประมาณ 10MB ต่อกระบวนการตาม Process Explorer เทียบกับการใช้ bin / bash หรือ git-bash

ฉันมีการกำหนดค่าที่ใช้ Scoop ในhttps://gist.github.com/trajano/24f4edccd9a997fad8b4de29ea252cc8


2
โปรดทราบว่า bash.exe อยู่ภายใต้ git \\ bin ไม่ใช่โดยตรงในไดเรกทอรี Git ซึ่งแตกต่างจาก git-bash.exe เรื่องนี้ทำให้ฉันสะดุดในตอนแรก
Mike Henry

70
หากคุณต้องการเพิ่มไอคอนที่ถูกต้องนี่คือสิ่งที่ฉันตั้งค่าฟิลด์ไอคอนเป็น:"icon" : "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico"
Chris Sandvik

1
จริง ๆ แล้วฉันใช้ไอคอนกำหนดเองicons8.com/icon/set/console/officeแต่มันเป็นคำแนะนำที่ดีถ้าคุณต้องการไอคอน
Archimedes Trajano

1
ฉันไม่มีตัวเลือก `-i -l 'สำหรับการโหลด bash_profile ขอบคุณ
ImAtWar

34
และเพียงเพื่อเพิ่มความคิดเห็นจาก @ChrisSandvik ไอคอนยังสามารถอ้างอิงเช่นนี้"icon" : "%PROGRAMFILES%\\git\\mingw64\\share\\git\\git-for-windows.ico"
จูเลียน

63

มีสิ่งที่ต้องทำด้านล่าง

  1. ตรวจสอบให้แน่ใจว่าgitคำสั่งของคุณสามารถรันได้สำเร็จใน CMD

นั่นหมายความว่าคุณต้องเพิ่มgitพา ธ เมื่อติดตั้ง git หรือเพิ่มไปยังสภาพแวดล้อมระบบในภายหลัง

ป้อนคำอธิบายรูปภาพที่นี่

  1. อัพเดตไฟล์กำหนดค่า profile.json

เปิดSettingsเพิ่มตัวอย่างต่อไปนี้ภายในคำ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 
        }

ไอคอนสามารถรับได้ที่นี่: git-bash_32px.ico

คุณสามารถเพิ่มไอคอนสำหรับ Tab ลงในตำแหน่งนี้:

%LOCALAPPDATA%\packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState

ใส่ 32x32 PNG / ไอคอนในโฟลเดอร์นี้จากนั้นprofile.jsonคุณสามารถอ้างอิงทรัพยากรรูปภาพด้วยเส้นทางที่ขึ้นต้นด้วย ms-appdata: //

โปรดทราบว่าโปรดตรวจสอบว่าGuidถูกต้องและตรงกับการกำหนดค่าที่ถูกต้อง

  1. ทดสอบทุบตี git ทำงานได้ดี Windows Terminal

ผลลัพธ์สุดท้ายอยู่ด้านล่าง: ป้อนคำอธิบายรูปภาพที่นี่


@Mendy FYI หวังว่าจะเป็นประโยชน์สำหรับคุณ
Bravo Yeung

27
คุณสามารถรับไอคอนได้จาก 'C: \\ Program Files \\ Git \\ mingw64 \\ share \\ git \\ git-for-windows.ico'
Mendy

ขอบคุณที่แสดงให้เห็นว่าเครื่องหมายทับซ้ายทำงานในพารามิเตอร์ commandLine ซึ่งทำให้การพิมพ์คำสั่งง่ายขึ้นมาก
Jim Raden

มีวิธีที่จะไม่ตรงเข้าไปใน / c / windows / system32 หรือไม่?
บรู๊คลิ

ขอบคุณ ... คำตอบที่ทำเครื่องหมายไว้ใช้ไม่ได้สำหรับฉันด้วยเหตุผลบางอย่าง แต่สิ่งนี้ทำได้ ฉันมีคอมไพล์ของฉันติดตั้งบนพาร์ติชันอื่นดังนั้นตัวแปรสภาพแวดล้อมจึงเป็นปัญหา คำตอบนี้มีข้อมูลน้อย แต่ตรงไปตรงมามากในการบรรลุเป้าหมาย
Felipe Correa

58

นี่คือคำตอบที่สมบูรณ์ ( GitBash + ชุดสี + ไอคอน + เมนูบริบท )

1) กำหนดโปรไฟล์เริ่มต้น:

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

2) เพิ่มโปรไฟล์ 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) เพิ่มชุดสี 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) ในการเพิ่มเมนูบริบทคลิกขวา "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\""
  • แทนที่{YOUR_WINDOWS_USERNAME}
  • สร้างโฟลเดอร์ไอคอนใส่ไอคอนที่นั่นและแทนที่{YOUR_ICONS_FOLDER}
  • บันทึกสิ่งนี้ในไฟล์Anything_filename.regและเรียกใช้

2
ทำไมคุณใช้รุ่น MSYS Git\\usr\\bin\\bash.exeแทน Git สำหรับรุ่น MinGW ของ Windows เริ่มต้นGit\\bin\\bash.exe?
Keith Russell

1
@ KeithRussell ฉันไม่ได้สังเกตเห็นเวลาที่ช้า แต่จริงๆถ้าฉันทำในภายหลังฉันอาจทดสอบระหว่างพวกเขา
Altin

2
หวาน! เพียงคัดลอกและวาง ไอคอนทำงานงานสีสมบูรณ์แบบ
Corepuncher

2
@KeithRussell ฉันตรวจสอบและพบstackoverflow.com/a/56844443/8874388และสามารถยืนยันสิ่งที่กล่าว bin\bash.exeเป็นตัวเรียกใช้ขนาดเล็กขนาด 43kb สำหรับusr\bin\bash.exe(2 mb) โดยทั่วไปเหมือนกับ symlink เพียงเพื่อความสะดวก ( binโฟลเดอร์มี bash, sh และ git) ไม่มีความแตกต่าง ฉันไม่แน่ใจว่าทำไมพวกเขาถึงทำให้binรุ่นของโฟลเดอร์เลย อาจPATHด้วยเหตุผลตัวแปรดั้งเดิม(เพื่อไม่ให้ติดกับพา ธ ด้วย ls.exe, cat.exe และอื่น ๆ ด้วย) แต่ใช่เราควรใช้usr/bin/bash.exeเพื่อหลีกเลี่ยงbin/bash.exeเสื้อคลุมไม่มีจุดหมาย
Mitch McMabers

1
@KeithRussell นอกจากนี้หากคุณคลิกขวาที่ส่วนหัวของคอลัมน์ในแท็บตัวจัดการงานของ Windows - รายละเอียดและเลือกคอลัมน์แล้วเปิดใช้งานคอลัมน์ "บรรทัดคำสั่ง" คุณจะเห็นว่าGit\usr\bin\bash.exeเริ่มต้นโดยไม่มีข้อโต้แย้งใด ๆ เพิ่มเติม ดังนั้นสิ่งเดียวที่เป็นไปได้ที่Git\bin\bash.exewrapper ทำก็คือฉีดตัวแปรสภาพแวดล้อมก่อนเปิดตัว แต่ฉันคิดว่าสิ่งเดียวที่มันแทรกคือ$MSYSTEM = MINGW64ตัวแปรที่ทำให้ PS1 พรอมต์ให้มีชื่อเรื่องที่แตกต่างกัน แต่ฉันสงสัยว่ามันจะแทรกอย่างอื่น เมื่อเรียกใช้งานไบนารีอย่างใดอย่างหนึ่ง
Mitch McMabers

7

เปลี่ยนพารามิเตอร์โปรไฟล์เป็น "commandline": "%PROGRAMFILES%\\Git\\bin\\bash.exe -l -i"

สิ่งนี้ใช้ได้กับฉันและอนุญาตให้สคริปต์. autocomplete นามแฝงของฉันทำงานได้


6

หากคุณต้องการแสดงไอคอนและใช้ชุดรูปแบบสีเข้ม ซึ่งหมายความว่าไอคอนที่ให้ไว้ข้างต้นไม่ได้ดูดีขนาดนั้น จากนั้นคุณสามารถค้นหาไอคอนได้ที่นี่

C:\Program Files\Git\mingw64\share\git\git-for-windows ฉันคัดลอกมา

%LOCALAPPDATA%\packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState

และตั้งชื่อgit-bash_32pxตามที่แนะนำข้างต้น

ควบคุมความทึบด้วย CTRL + SHIFT + scrolling

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

รายการอื่นที่ควรทราบ - ใน settings.json ฉันค้นพบว่าคุณไม่ได้ใช้ "commandline": "C: / Program Files / Git / bin / bash.exe"

และใช้แทน: "commandline": "C: / Program Files / Git / git-bash.exe"

เชลล์ Git จะเปิดขึ้นในหน้าต่างอิสระนอก Windows Terminal แทนบนแท็บซึ่งไม่ใช่พฤติกรรมที่ต้องการ นอกจากนี้แท็บในเทอร์มินัล Windows ที่เปิดจะต้องปิดด้วยตนเองเนื่องจากจะแสดงข้อมูลที่ออกจากกระบวนการ - [กระบวนการออกจากรหัส 3221225786] เป็นต้น

อาจช่วยบางคนปวดหัว


4

เนื่องจากคำตอบส่วนใหญ่แสดงการกำหนดค่าจำนวนมากที่ไม่เกี่ยวข้องหรือไม่แสดงการกำหนดค่าเลยนี่คือคำตอบของฉันเองที่พยายามเน้นให้มากขึ้น มันเป็นไปตามหลักArchimedes Trajano ของคำตอบและการตั้งค่าโปรไฟล์การอ้างอิง

ขั้นตอน

  1. เปิดPowerShellแล้วป้อน[guid]::NewGuid()เพื่อสร้าง GUID ใหม่ เราจะใช้มันในขั้นตอนที่ 3

    > [guid]::NewGuid()
    
    Guid
    ----
    a3da8d92-2f3f-4e36-9714-98876b6cb480
  2. เปิดการตั้งค่าของWindows Terminal ( CTRL+ ,)

  3. เพิ่มวัตถุ JSON profiles.listต่อไปนี้ แทนที่guidด้วยสิ่งที่คุณสร้างในขั้นตอนที่ 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%"
    },

หมายเหตุ

  • ขณะนี้มีปัญหาที่คุณไม่สามารถใช้แป้นลูกศร (และปุ่มอื่น ๆ บางปุ่ม) ดูเหมือนว่าจะทำงานกับเวอร์ชันตัวอย่างล่าสุดได้ ( ปัญหา # 6859 )

  • ระบุ"startingDirectory" : "%USERPROFILE%"ไม่ควรจะเป็นสิ่งที่จำเป็นตามการอ้างอิง อย่างไรก็ตามถ้าฉันไม่ได้ระบุไดเรกทอรีเริ่มต้นจะแตกต่างกันไปขึ้นอยู่กับวิธีที่ฉันเริ่มต้นสถานี

  • profiles.defaultsการตั้งค่าที่จะนำไปใช้กับทุกขั้วสามารถระบุได้ใน

  • ผมขอแนะนำให้ไปยังชุดใน"antialiasingMode": "cleartype" profiles.defaultsคุณต้องลบ"useAcrylic"(ถ้าคุณเพิ่มคำแนะนำอื่น ๆ ตามคำแนะนำ) เพื่อให้มันใช้งานได้ มันช่วยปรับปรุงคุณภาพของการแสดงผลข้อความ useAcrylicแต่คุณไม่สามารถมีพื้นหลังโปร่งใสโดยไม่ต้อง ดูรุ่น #


0

ฉันทำดังนี้

  1. เพิ่ม "% programfiles% \ Git \ Bin" ใน PATH ของคุณ
  2. บน profiles.json ให้ตั้งค่าบรรทัดคำสั่งที่ต้องการเป็น "commandline": "sh --cd-to-home"
  3. รีสตาร์ท Windows Terminal

มันใช้งานได้สำหรับฉัน


0

การเพิ่ม"%PROGRAMFILES%\\Git\\bin\\bash.exe -l -i"ไม่ทำงานสำหรับฉัน เพราะสัญลักษณ์พื้นที่ (ซึ่งเป็นตัวคั่นใน cmd) ใน% ProgramFiles% รันขั้วคำสั่งแทน"C:\Program" "C:\Program Files\Git\bin\bash.exe -l -i"การแก้ปัญหาควรเป็นสิ่งที่ต้องการเพิ่มเครื่องหมายคำพูดในไฟล์ json แต่ฉันไม่ได้คิดออกว่า ทางออกเดียวคือการเพิ่ม "C: \ Program Files \ Git \ bin" ไปยัง% PATH% และเขียน"commandline": "bash.exe"ใน profiles.json


"commandline" : "C:\\PROGRA~1\\Git\\bin\\bash.exe",ผมใช้ ไม่จำเป็นต้องแก้ไขเส้นทางของฉัน
PTRK

มันไม่ได้ผลสำหรับฉัน lauches cmd แต่ถ้าฉันพิมพ์"C:\\PROGRA~1\\Git\\bin\\bash.exe"ในหน้าต่างเทอร์มินัลที่เปิด bash จะเริ่มขึ้น
Grigoriy

คุณต้องมีชุดเครื่องหมายคำพูดที่หลีกหนีเพิ่มเติมซึ่งอยู่รอบ ๆ % PROGRAMFILES% เช่น:"commandline" : "\"%PROGRAMFILES%\\git\\usr\\bin\\bash.exe\" -i -l"
BJury
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.