วิธีใช้รหัส Visual Studio เป็นตัวแก้ไขเริ่มต้นสำหรับ Git


364

เมื่อใช้คอมไพล์ที่บรรทัดคำสั่งฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะใช้ Visual Studio Code เป็นเครื่องมือแก้ไขเริ่มต้นเช่นเมื่อสร้างคอมมิชชันคอมเม้นท์และดูไฟล์ต่างจากบรรทัดคำสั่ง

ฉันเข้าใจว่ามันเป็นไปไม่ได้ที่จะใช้มันเพื่อทำการผสาน (อย่างน้อยในนาที) แต่ไม่มีใครรู้ว่ามันเป็นไปได้ที่จะใช้มันเพื่อดู diff หรือไม่และถ้าใช่ตัวเลือกบรรทัดคำสั่งจะต้องมีอะไรบ้าง ไฟล์. gitconfig เพื่อทำให้เกิดขึ้น

อัปเดต 1:

ฉันได้ลองวิธีการคล้ายกับสิ่งที่ฉันทำสำหรับNotepad ++ ในอดีตเช่น

#!/bin/sh

"c:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

และใช้:

#!/bin/sh

"C:\Users\gep13\AppData\Local\Code\app-0.1.0\Code.exe" "$*"

แต่ผลลัพธ์นี้เป็นข้อความแสดงข้อผิดพลาด:

C:\temp\testrepo [master +1 ~0 -0]> git commit
[8660:0504/084217:ERROR:crash_reporter_win.cc(70)] Cannot initialize out-of-process crash handler
Aborting commit due to empty commit message.
C:\temp\testrepo [master +1 ~0 -0]>

รหัสเปิดขึ้นอย่างถูกต้องพร้อมเนื้อหาที่คาดหวัง แต่ไม่รอการตอบสนองเช่นคลิกบันทึกและปิดหน้าต่างเพื่อกลับไปที่พร้อมท์

อัปเดต 2:

ฉันเพิ่งได้ยินกลับมาจากหนึ่งในนักพัฒนาที่ทำงานกับ VSCode ดูเหมือนว่าฟังก์ชั่นนี้ยังไม่รองรับ :-(

https://twitter.com/IsidorN/status/595501573880553472

หากคุณสนใจที่จะเห็นคุณลักษณะนี้ได้รับการเพิ่มคุณอาจต้องการพิจารณาเพิ่มคะแนนของคุณที่นี่:

http://visualstudio.uservoice.com/forums/293070-visual-studio-code/suggestions/7756482-support-git-configure-diff-and-merge-tools

อัปเดต 3:

ฉันได้รับแจ้งอย่างน่าเชื่อถือว่าฟีเจอร์นี้ได้รับการคัดเลือกโดยทีม VSCode ดังนั้นฉันรอคอยการเปิดตัวในอนาคตที่จะรวมไว้

ปรับปรุง 4:

ขอบคุณที่ความคิดเห็น @ f-boucheros ด้านล่างฉันได้รับ VS Code ทำงานเป็นตัวแก้ไขเริ่มต้นสำหรับคอมเม้นท์รีบูต ฯลฯ ฉันยังต้องการดูว่ามันเป็นไปได้ที่จะใช้มันเป็นเครื่องมือ diff หรือไม่

ปรับปรุง 5:

ตามคำตอบที่ได้รับการยอมรับสำหรับคำถามนี้สามารถใช้รหัส V1.0 ได้แล้ว

คำตอบ:


673

ในรีลีสล่าสุด (v1.0, รีลีสในเดือนมีนาคม 2559 ) ตอนนี้คุณสามารถใช้ VS Code เป็นเครื่องมือคอมมิทคอมคอมมิท / คอมไพล์ git เริ่มต้นได้แล้ว อ้างถึงจากเอกสาร:

  1. ตรวจสอบให้แน่ใจว่าคุณสามารถเรียกใช้code --helpจากบรรทัดคำสั่งและขอความช่วยเหลือได้

    • หากคุณไม่เห็นความช่วยเหลือโปรดทำตามขั้นตอนเหล่านี้:

      • Mac: เลือกShell Command: ติดตั้งคำสั่ง 'Code' ในพา ธจาก Command Palette

        • Command Palette คือสิ่งที่ปรากฏขึ้นเมื่อคุณกดshift+ + Pในขณะที่อยู่ใน VS Code ( shift+ ctrl+ Pใน Windows)
      • Windows: ตรวจสอบให้แน่ใจว่าคุณเลือกAdd to PATHระหว่างการติดตั้ง
      • Linux: ตรวจสอบให้แน่ใจว่าคุณติดตั้ง Code ผ่านแพ็คเกจ. deb หรือ. rpm ใหม่ของเรา
  2. จากบรรทัดคำสั่งให้รัน git config --global core.editor "code --wait"

ตอนนี้คุณสามารถเรียกใช้git config --global -eและใช้รหัส VS เป็นตัวแก้ไขสำหรับการกำหนดค่า Git ป้อนคำอธิบายรูปภาพที่นี่ เพิ่มรายการต่อไปนี้เพื่อเปิดใช้งานการสนับสนุนสำหรับการใช้ VS Code เป็นเครื่องมือ diff:

[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE

--diffตัวเลือกนี้ใช้ประโยชน์จากตัวเลือกใหม่ที่คุณสามารถส่งไปยัง VS Code เพื่อเปรียบเทียบสองไฟล์เคียงข้างกัน

เพื่อสรุปนี่คือตัวอย่างบางส่วนของที่คุณสามารถใช้ Git กับรหัส VS:

  • git rebase HEAD~3 -i อนุญาตให้มีการรีบูตแบบโต้ตอบโดยใช้ VS Code
  • git commit อนุญาตให้ใช้ VS Code สำหรับข้อความยืนยัน
  • git add -pตามด้วยeการเพิ่มเชิงโต้ตอบ
  • git difftool <commit>^ <commit> อนุญาตให้ใช้ VS Code เป็นตัวแก้ไข diff สำหรับการเปลี่ยนแปลง

84
ฉันยังพบว่า--new-windowการเพิ่มคำสั่งนั้นมีประโยชน์ วิธีนี้การดำเนินการคอมไพล์จะเปิดในหน้าต่างใหม่
jrotello

2
เมื่อเราพูดถึงบรรทัดคำสั่งเราหมายถึงCtrl+Shift+Pอะไร ของฉันไม่ทำงาน (ไม่มีcode --helpให้ใช้) และฉันไม่เข้าใจความหมาย: "ให้แน่ใจว่าคุณได้เลือกที่จะเพิ่มในเส้นทางระหว่างการติดตั้ง" ฉันควรตรวจสอบอะไร? มีใครช่วยได้บ้าง
เปาโล Falomo

2
หมายเหตุตั้งแต่ v1.1 คุณต้องปิดการใช้งาน "hot exit" หรืออย่าลืมบันทึกไฟล์อย่างชัดเจนก่อนที่จะออก vscode มิฉะนั้น git จะไม่เห็นการเปลี่ยนแปลงใด ๆ หากคุณต้องการได้รับการเตือนให้บันทึกเมื่อออกคุณสามารถปิดใช้งานคุณสมบัตินี้ได้โดยแก้ไขการตั้งค่าผู้ใช้ของคุณ: แทรก"files.hotExit": "off"ที่ด้านล่างของการกำหนดค่าของคุณ
Jack Ukleja

6
ฉันต้องใช้git config core.editor "code -n --wait"กับ VS Code 1.17.2 ซึ่งรันจากบรรทัดคำสั่งภายนอก ทั้งสองcodeและcode --waitได้รับฉัน "ยกเลิกการกระทำเนื่องจากข้อความกระทำที่ว่างเปล่า"
Robert Calhoun

3
และการผสานตอนนี้พร้อมใช้งานเช่นเดียวกับ: [ผสาน] เครื่องมือ = vscode [mergetool "vscode"] cmd = รหัส - รอ $ MERGED
Sting

31

สำหรับสิ่งที่ฉันเข้าใจ VSCode ไม่ได้อยู่ใน AppData อีกต่อไป

ดังนั้นตั้งค่าตัวแก้ไข git เริ่มต้นโดยการดำเนินการคำสั่งนั้นในหน้าต่างพรอมต์คำสั่ง:

git config --global core.editor "'C:\Program Files (x86)\Microsoft VS Code\code.exe' -w"

พารามิเตอร์-w, --waitคือการรอหน้าต่างจะปิดก่อนที่จะกลับ รหัส Studio Visual เป็นพื้นฐานในการแก้ไข Atom atom --helpถ้าคุณยังอะตอมติดตั้งรันคำสั่ง คุณจะเห็นอาร์กิวเมนต์สุดท้ายในความช่วยเหลือคือรอ

ครั้งต่อไปที่คุณทำgit rebase -i HEAD~3มันจะป๊อปอัปรหัส Visual Studio เมื่อ VSCode ปิดแล้ว Git จะกลับมาเป็นผู้นำ

หมายเหตุ: VSCode เวอร์ชันปัจจุบันของฉันคือ 0.9.2

ฉันหวังว่าจะช่วยได้


ขอบคุณ! อะไรคือความสำคัญของ-wและคุณพบว่าเอกสารนั้นอยู่ที่ไหน
Gary Ewan Park

1
จุดดี. มันมาจาก Atom -w สำหรับ Wait ฉันแก้ไขคำตอบของฉัน
Frank Boucher

ฉันตั้งค่านี้แล้วและฉันยินดีที่จะบอกว่าใช้งานได้ ถ้าฉันสามารถทำให้มันใช้งานได้ในขณะนี้ในขณะที่ Visual Studio Code กำลังทำไฟล์ที่แตกต่างกัน :-)
Gary Ewan Park

10
ตอนนี้ดูเหมือนว่าจะไม่ทำงานกับการอัปเดตล่าสุดเป็นรหัส VS อีกต่อไป คุณมีความคิดใด ๆ ขอบคุณ!
Gary Ewan Park

2
@GaryEwanPark: คุณต้องเรียกใช้code.cmd (หรือรหัสบน * nix) จากไดเรกทอรีย่อยbinแทนเพื่อให้ตัวเลือกบรรทัดคำสั่งทำงานได้ เป็นการดีที่คุณจะต้องเพิ่มbinไดเรกทอรีย่อย% PATH ตัวแปรสภาพแวดล้อมของคุณ% (ติดตั้งไม่ว่าสำหรับคุณมากเกินไป) git config --global core.editor "code --wait"และกำหนดค่าการแก้ไขการทำงาน
IIsspectable

13

คุณต้องใช้คำสั่ง:

git config --global core.editor "'C:\Program Files\Microsoft VS Code\code.exe' -n -w"

ตรวจสอบให้แน่ใจว่าคุณสามารถเริ่มโปรแกรมแก้ไขจาก Git Bash

ถ้าคุณต้องการใช้ Code.exe ด้วยเส้นทางที่สั้นคุณสามารถทำได้โดยเพิ่มบรรทัดต่อไปนี้ใน. bash_profile ของคุณ:

alias vscode="C:/Program\ Files/Microsoft\ VS\ Code/Code.exe"

และตอนนี้คุณสามารถเรียกมันได้โดยใช้vscodeคำสั่งเท่านั้น(หรืออะไรก็ตามที่คุณตั้งชื่อ)

ข้อมูลเพิ่มเติมบางส่วน:

การตั้งค่าจะเพิ่มรหัส Visual Studio ไปที่% PATH% ของคุณดังนั้นจากคอนโซลคุณสามารถพิมพ์ 'code' เพื่อเปิด VS Code ในโฟลเดอร์นั้น คุณจะต้องรีสตาร์ทคอนโซลของคุณหลังจากการติดตั้งเพื่อให้การเปลี่ยนแปลงตัวแปรสภาพแวดล้อม% PATH% มีผล


1
-nย่อมาจาก--new-windowการทำให้คอมไพล์เปิดหน้าต่างตัวแก้ไขใหม่และ-wย่อมาจาก--waitทำให้คอมไพล์รอให้คุณปิดหน้าต่างอีกครั้ง นี่คือคำตอบเดียวที่ผลงานที่สำหรับผมเพราะผมถ้าผมมีอยู่แล้วเปิด VS รหัสจะไม่ทำงานโดยไม่ต้อง--wait --new-window
Jan Aagaard

11

อีกตัวเลือกที่มีประโยชน์คือการตั้งค่าEDITORตัวแปรสภาพแวดล้อม ยูทิลิตี้หลายตัวใช้ตัวแปรสภาพแวดล้อมนี้เพื่อให้ทราบว่าจะใช้โปรแกรมแก้ไขใด Git ยังใช้มันหากไม่มีการcore.editorตั้งค่า

คุณสามารถตั้งค่าสำหรับเซสชันปัจจุบันโดยใช้:

export EDITOR="code --wait"

วิธีนี้ไม่เพียงgitแต่แอปพลิเคชั่นอื่น ๆ อีกมากมายจะใช้ VS Code เป็นตัวแก้ไข

หากต้องการทำการเปลี่ยนแปลงนี้อย่างถาวรให้เพิ่มสิ่งนี้ลง~/.profileในตัวอย่างของคุณ ดูคำถามนี้สำหรับตัวเลือกเพิ่มเติม


ข้อดีอีกประการของวิธีนี้คือคุณสามารถตั้งค่าตัวแก้ไขที่แตกต่างกันสำหรับกรณีที่แตกต่างกัน:

  1. เมื่อคุณทำงานจากสถานีท้องถิ่น
  2. เมื่อคุณเชื่อมต่อผ่านเซสชัน SSH

สิ่งนี้มีประโยชน์โดยเฉพาะกับรหัส VS (หรือตัวแก้ไข GUI อื่น ๆ ) เพราะมันใช้งานไม่ได้หากไม่มี GUI

บน Linux OS ให้ใส่สิ่งนี้ลงใน~/.profile:

# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then # SSH mode
  export EDITOR='vim'
else # Local terminal mode
  export EDITOR='code -w'
fi

วิธีนี้เมื่อคุณใช้เทอร์มินัลท้องถิ่น$SSH_CONNECTIONตัวแปรสภาพแวดล้อมจะว่างเปล่าดังนั้นตัวcode -wแก้ไขจะถูกนำมาใช้ แต่เมื่อคุณเชื่อมต่อผ่าน SSH แล้ว$SSH_CONNECTIONตัวแปรสภาพแวดล้อมจะเป็นสตริงที่ไม่ว่างดังนั้นจึงvimจะใช้ตัวแก้ไข มันเป็นตัวแก้ไขคอนโซลดังนั้นมันจะทำงานแม้ว่าคุณจะเชื่อมต่อผ่าน SSH


2

ฉันเปิดขึ้น.gitconfigและแก้ไขด้วย:

[core]
    editor = 'C:/Users/miqid/AppData/Local/Code/app-0.1.0/Code.exe'

ทำเพื่อฉัน (ฉันใช้ Windows 8)

อย่างไรก็ตามฉันสังเกตเห็นว่าหลังจากที่ฉันลองโดยพลการgit commitว่าในคอนโซลGit Bash ของฉันฉันเห็นข้อความต่อไปนี้:

[9168:0504/160114:INFO:renderer_main.cc(212)] Renderer process started

ไม่แน่ใจว่าสิ่งนี้จะเป็นอย่างไร


ฉันได้ลองแล้ว แต่ฉันได้รับ "ร้ายแรง: ไฟล์กำหนดค่าบรรทัดที่ 14 ใน C: \ Users \ gep13 / .gitconfig" จากนั้นฉันสังเกตเห็นว่าฉันมีแบ็กสแลชซึ่งคุณมีเครื่องหมายทับซ้ายไป การเปลี่ยนรอบเหล่านั้นทำให้มันทำงานได้ แต่เหมือนคุณฉันเห็นผลลัพธ์ "กระบวนการ Renderer เริ่มต้น" ซึ่งจริงแล้วส่งออกสองครั้งสำหรับฉันแล้วแสดง: "[11956: 0504/091108: ข้อผิดพลาด: ipc_channel_win.cc (136)] ไปป์ ข้อผิดพลาด: 109" แต่กระทำจริงดูเหมือนว่าจะได้ทำงาน
Gary Ewan Park

อ่าน่าสนใจ ดูเหมือนว่าคำแนะนำของฉันจะใช้ได้เฉพาะเมื่อคุณปิด Code ทั้งหมดแล้ว(ไม่สะดวกมาก!)ก่อนที่จะทำการคอมมิท ฉันพบข้อผิดพลาดเดียวกันกับที่คุณรายงานในการอัพเดตหากเปิดรหัส
miqh

น่าสนใจแน่นอน ฉันเดาว่าเป็นที่ที่แฟล็ก -multiInst สำหรับ Notepad ++ จะเข้ามาเล่น ฉันสงสัยว่ามีบางสิ่งที่คล้ายคลึงกับ VSCode หรือไม่
Gary Ewan Park

เพียงแค่ FYI app-0.1.0/resources/app/env.jsดูเหมือนว่าจะมีการตั้งค่าสถานะบรรทัดคำสั่งไม่กี่รายการที่รหัสปฏิบัติการใช้ ไม่แนะนำให้เทียบเท่าพฤติกรรมกับที่-multiInstแม้ว่า
miqh

คุณจำเป็นต้องเพิ่มการ--waitตั้งค่าสถานะและ--new-windowขอแนะนำให้ตั้งค่าสถานะเพื่อให้ยอมรับ msg / diff / อะไรก็ตามที่ไม่เพียงแสดงเป็นแท็บใหม่ในตัวแก้ไขที่เปิดอยู่แล้วต้องการให้คุณปิดไฟล์ที่คุณอาจยัง ทำงานเพื่อส่งสัญญาณคอมไพล์ที่คุณแก้ไขเสร็จแล้ว
Isochronous

1

GitPadตั้งค่าเครื่องมือแก้ไขข้อความปัจจุบันของคุณเป็นโปรแกรมแก้ไขเริ่มต้นสำหรับ Git

โปรแกรมแก้ไขเริ่มต้นของฉันสำหรับ.txtไฟล์ใน Windows 10 คือ Visual Studio Code และใช้ GitPad ครั้งหนึ่งทำให้มันเป็นเครื่องมือแก้ไขเริ่มต้นสำหรับ Git ฉันไม่ได้ประสบปัญหาที่กล่าวถึงในคำถาม (Git รอจนกระทั่งหน้าต่างรหัส VS ปิดในกรณีของฉัน)

(การเชื่อมโยงสำหรับการ.exeไฟล์ไม่ทำงานสำหรับฉันคุณอาจต้องรวบรวมแหล่งที่มาของตัวเอง.)


คุณชี้ไปที่สิ่งใดในฐานะเครื่องมือแก้ไขเริ่มต้น ฉันได้ลองใช้สิ่งที่อธิบายไว้ที่นี่: donovanbrown.com/post/2015/07/07/แต่ดูเหมือนจะไม่ทำงาน ไม่ต้องการชี้ไปที่ exe เฉพาะเนื่องจากจะมีการเปลี่ยนแปลงเมื่อมีการอัปเดตโค้ด
Gary Ewan Park

1
@Gary ผมไม่ได้มีการชี้ไฟล์เฉพาะรหัสที่อยู่ในรายการเมื่อฉันได้Right click> >Open with Chose another appฉันคาดหวังว่ามันจะลงทะเบียนตัวเองในการตั้งค่า (และอัปเดตรีจิสทรีด้วยการอัพเดททุกครั้งเพื่อให้เชลล์สามารถหาได้) แต่ฉันไม่พบสิ่งใดนอกจากรายการเมนูบริบท "เปิดด้วยรหัส" ในรีจิสทรี ดังนั้นฉันจึงไม่มีคำตอบที่ชัดเจนสำหรับเรื่องนี้ขอโทษ
ŞafakGür

อืมมันแปลกฉันไม่มีรหัสเป็นรายการในรายการที่ปรากฏเมื่อฉันทำเช่นนั้น
Gary Ewan Park

1

ข่าวดี! ในขณะที่เขียนนี้คุณลักษณะนี้ได้ถูกนำมาใช้ใน0.10.12-ภายในการเปิดตัวและดำเนินการผ่าน0.10.14-ภายใน ดังนั้นเราจะไปมีมันอยู่ในที่จะเกิดขึ้นรุ่น1.0 ข่าวของ VS รหัส

การใช้งาน Ref: Implement -w / - wait บรรทัดคำสั่ง arg


คุณสามารถแสดงความคิดเห็นเกี่ยวกับวิธีที่ฉันจะสามารถใช้ diff Viewer ภายใน VSCode เพื่อดู diff's ในคอมไพล์ได้หรือไม่?
Gary Ewan Park

1

เพียงแค่ต้องการเพิ่มเครื่องหมายแบ็กสแลชเหล่านี้ไปยังคำตอบก่อนหน้านี้ฉันอยู่บน Windows 10 CMD และมันไม่ทำงานหากไม่มีเครื่องหมายแบ็คสแลชก่อนช่องว่าง

git config --global core.editor "C:\\Users\\your_user_name\\AppData\\Local\\Programs\\Microsoft\ VS\ Code\\Code.exe"

ฉันสามารถเพิ่มด้วย: git config - global core.editor "'C: \ Users \ cbre_admin \ AppData \ Local \ Programs \ Microsoft VS Code \ Code.exe' -w VS
wj

0

ฉันไม่แน่ใจว่าคุณสามารถทำได้ แต่คุณสามารถลองเพิ่มเติมเหล่านี้ในไฟล์ gitconfig ของคุณ

ลองแทนที่ kdiff3 จากค่าเหล่านี้เพื่อชี้ไปยังโค้ดสตูดิโอที่มองเห็นได้

[merge] tool = kdiff3 [mergetool "kdiff3"] path = C:/Program Files/KDiff3/kdiff3.exe keepBackup = false trustExitCode = false


ดังที่ฉันกล่าวถึงในคำถามของฉันฉันไม่คิดว่าการผสานจะได้รับการสนับสนุนเนื่องจากฉันไม่คิดว่า Visual Studio Code รู้วิธีการทำเช่นนี้ฉันสงสัยว่ามันจะสามารถแพร่กระจายและส่งข้อความได้เท่านั้น
Gary Ewan Park

0

ฉันตั้งค่ารหัส Visual Studio เป็นค่าเริ่มต้นเพื่อเปิดไฟล์. txt git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'"และฉันต่อไปได้คำสั่งการใช้งานง่าย: และทุกอย่างทำงานได้ดีทีเดียว


0

เรียกใช้คำสั่งนี้ในแอป Mac Terminal ของคุณ

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code"

2
สิ่งนี้ไม่ได้ผลเนื่องจากคุณได้รับข้อความแสดงข้อผิดพลาด: การยกเลิกการส่งข้อความเนื่องจากข้อความคอมมิทว่างเปล่า จำเป็นต้องเพิ่มการรอสถานะ ตัวอย่างเช่น - รอ
Belfield

0

บน windows 10 โดยใช้ 64 บิต insiders edition คำสั่งควรเป็น:

git config - global core.editor "'C: \ Program Files \ Microsoft VS รหัส Insiders \ bin \ code-insiders.cmd'"

คุณสามารถเปลี่ยนชื่อ 'code-insiders.cmd' เป็น 'code.cmd' ในไดเรกทอรี 'Program Files' ด้วยวิธีนี้คุณสามารถใช้คำสั่ง 'code' ได้ เพื่อเริ่มแก้ไขไฟล์ใน ไดเรกทอรี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.