Git의 기본 편집기로 Visual Studio Code를 사용하는 방법


364

커맨드 라인에서 git을 사용할 때 Visual Studio Code를 기본 편집기로 사용할 수 있는지, 즉 커밋 주석을 만들고 커맨드 라인에서 파일의 diff를 볼 수 있는지 궁금합니다.

병합을 수행하는 데 (최소 1 분) 사용할 수는 없지만 diff를 볼 때 사용할 수 있는지, 그렇다면 명령 줄 옵션이 필요한지 알고 있습니다. 이를 위해 .gitconfig 파일?

업데이트 1 :

나는에 대해 수행 한 것과 유사한 접근 시도 과거에 메모장 + + , 즉

#!/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가 커밋 주석, rebase 등의 기본 편집기로 작동하도록 할 수있었습니다. diff 도구로도 사용할 수 있는지 여전히 확인하고 싶습니다.

업데이트 5 :

질문에 대한 대답에 따라 이제 V1.0 코드 릴리스를 사용하여 가능합니다.

답변:


673

최신 릴리스 ( 2016 년 3 월에 릴리스 된 v1.0 )에서 VS 코드를 기본 git commit / diff 도구로 사용할 수 있습니다. 문서에서 인용 :

  1. code --help명령 행에서 실행할 수 있는지 확인 하고 도움을 받으십시오.

    • 도움말이 보이지 않으면 다음 단계를 따르십시오.

      • Mac : Shell Command 선택 : Command Palette 에서 경로에 'Code'명령을 설치 하십시오 .

        • 명령 팔레트는 VS 코드 내부에서 shift+ + 를 누르면 팝업됩니다 P. ( Windows의 경우 shift+ ctrl+ P)
      • Windows : 설치 중에 PATH에 추가를 선택했는지 확인하십시오 .
      • Linux : 새로운 .deb 또는 .rpm 패키지를 통해 Code를 설치했는지 확인하십시오.
  2. 명령 행에서 다음을 실행하십시오. git config --global core.editor "code --wait"

이제 git config --global -eGit 구성을위한 편집기로 VS Code를 실행 하고 사용할 수 있습니다 . 여기에 이미지 설명을 입력하십시오 VS 코드를 diff 도구로 사용하는 기능을 지원하려면 다음을 추가하십시오.

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

이것은 --diffVS 코드로 전달하여 두 파일을 나란히 비교할 수 있는 새로운 옵션을 활용합니다 .

요약하면 다음과 같이 VS 코드와 함께 Git을 사용할 수있는 몇 가지 예가 있습니다.

  • git rebase HEAD~3 -i VS 코드를 사용하여 대화식 리베이스 가능
  • git commit 커밋 메시지에 VS 코드를 사용할 수 있습니다.
  • git add -p다음에 e대화 형 추가에 대한
  • git difftool <commit>^ <commit> VS 코드를 변경을 위해 diff 편집기로 사용할 수 있습니다

84
또한 --new-window명령에 addinng 가 도움이된다는 것을 알았 습니다. 이렇게하면 git 작업이 새 창에서 열립니다.
jrotello

2
우리가 이야기 할 때 명령 줄 우리는 의미 Ctrl+Shift+P? 광산이 작동하지 않고 ( code --help사용할 수 없음 ) 나는 "설치 중에 PATH에 추가를 선택했는지 확인하십시오"라는 의미를 이해하지 못합니다. 확인하려면 어떻게해야합니까? 누군가 제발 도와주세요?
Paolo Falomo

2
v1.1부터는 "hot exit"를 비활성화하거나 vscode를 종료하기 전에 파일을 명시 적으로 저장해야합니다. 그렇지 않으면 git에 변경 내용이 표시되지 않습니다. "files.hotExit": "off"
종료시

6
git config core.editor "code -n --wait"외부 명령 줄에서 실행되는 VS Code 1.17.2와 함께 사용해야 했습니다. 모두 codecode --wait은 "중단합니다 커밋 메시지 비어로 인해 커밋."저를 얻었다
Robert Calhoun

3
[merge] tool = vscode [mergetool "vscode"] cmd = code --wait $ MERGED
Sting

31

내가 이해하기 위해 VSCode는 더 이상 AppData에 없습니다.

따라서 명령 프롬프트 창에서 해당 명령을 실행하여 기본 git 편집기를 설정하십시오.

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

매개 변수는 -w, --wait윈도우 반환하기 전에 닫아야 기다리는 것입니다. Visual Studio Code는 Atom Editor를 기반으로합니다. atom이 설치되어 있으면 명령을 실행하십시오 atom --help. 도움말에서 마지막 인수는 기다림입니다.

다음에 그렇게하면 git rebase -i HEAD~3Visual Studio Code가 나타납니다. VSCode가 닫히면 Git이 리드를 다시 가져옵니다.

참고 : VSCode의 현재 버전은 0.9.2입니다.

도움이 되길 바랍니다.


감사! 의 중요성은 무엇 -w이며 어디에 기록되어 있습니까?
게리 이완 파크

1
좋은 지적. Atom에서 온 것입니다 -w는 기다립니다. 내 답변을 편집했습니다.
Frank Boucher

나는 이것을 설정했고, 그것이 작동한다고 말하게되어 기쁘다. Visual Studio Code가 파일의 diffing을 수행 하면서이 작업을 수행 할 수 있다면 좋을 것입니다! :-)
Gary Ewan Park

10
이것은 이제 더 이상 최신 VS 코드 업데이트와 함께 작동하지 않는 것 같습니다. 당신은 어떤 아이디어가 있습니까? 감사!
게리 이완 파크

2
@GaryEwanPark : 명령 행 옵션이 작동하려면 대신 bin 서브 디렉토리 에서 code.cmd (또는 * nix의 코드) 를 실행해야합니다 . 이상적으로 bin 하위 디렉토리를 % PATH % 환경 변수에 추가하고 (설치 프로그램에서도이를 수행함) 실행중인 편집기를 구성하십시오 . git config --global core.editor "code --wait"
IInspectable

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 Code를 % PATH %에 추가하므로 콘솔에서 'code'를 입력하여 해당 폴더에서 VS Code를 열 수 있습니다. % PATH % 환경 변수에 대한 변경 사항을 적용하려면 설치 후 콘솔을 다시 시작해야합니다.


1
-n의 약자로 --new-window새로운 편집기 창을 열어 GIT 결정, -w짧은이다 --wait다시 창을 닫으에 대한 자식 대기하고. 내가 이미 VS 코드를 열면 . --wait없이는 작동하지 않기 때문에 이것은 나를 위해 유일한 대답입니다 --new-window.
Jan Aagaard

11

또 다른 유용한 옵션은 EDITOR환경 변수 를 설정하는 것입니다. 이 환경 변수는 많은 유틸리티에서 어떤 편집기를 사용해야하는지 알기 위해 사용됩니다. core.editor설정 되지 않은 경우 Git도 사용합니다 .

다음을 사용하여 현재 세션에 설정할 수 있습니다.

export EDITOR="code --wait"

이 방법 git뿐만 아니라 많은 다른 응용 프로그램이 VS 코드를 편집기로 사용합니다.

이 변경 사항을 영구적으로 유지하려면이 ~/.profile를 예를 들어 추가하십시오 . 더 많은 옵션에 대해서는 이 질문 을 참조하십시오 .


이 방법의 또 다른 장점은 사례마다 다른 편집기를 설정할 수 있다는 것입니다.

  1. 로컬 터미널에서 작업 할 때
  2. SSH 세션을 통해 연결된 경우

이것은 GUI 없이는 작동하지 않기 때문에 특히 VS Code (또는 다른 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 Bash 콘솔 git commit에서 임의의 것을 시도한 후 다음 메시지가 표시됩니다.

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

이것이 어떤 결과를 가져올 지 확신 할 수 없습니다.


그러나 또한 "C : \ Users \ gep13 / .gitconfig의 치명적 : 잘못된 구성 파일 줄 14"를 받고 난 뒤에 백 슬래시가있는 것을 알았습니다. 그 라운드를 변경하면 효과가 있었지만, "Renderer process started"출력이 실제로 두 번 출력되고 "[11956 : 0504/091108 : ERROR : ipc_channel_win.cc (136)] 파이프가 표시됩니다. error : 109 "그러나 커밋은 실제로 작동 한 것 같습니다.
Gary Ewan Park

아, 흥미 롭습니다. 커밋을하기 전에 코드가 완전히 닫히면 (매우 편리하지 않습니다!) 제안하는 것이 좋습니다 . 코드가 열려 있으면 업데이트에서보고 한 것과 같은 오류가 발생합니다.
miqh

정말 흥미 롭습니다. 메모장 ++에 대한 -multiInst 플래그가 작동하는 곳입니다. VSCode와 비슷한 것이 있는지 궁금합니다.
게리 이완 파크

참고로 app-0.1.0/resources/app/env.js코드 실행 파일에 사용되는 몇 가지 명령 줄 플래그가 포함되어 있습니다. -multiInst그러나 그와 동등한 행동을 제안하는 사람은 없습니다.
miqh

--wait플래그 를 추가해야 하며 --new-window플래그도 강력하게 권장되므로 커밋 msg / diff / what은 이미 열려있는 편집기에서 새 탭으로 표시되지 않으므로 여전히 파일을 닫아야합니다. git에게 편집이 완료되었음을 알리기 위해 작업 중입니다.
등시성

1

GitPad 는 현재 텍스트 편집기를 Git의 기본 편집기로 설정합니다.

.txtWindows 10의 파일에 대한 기본 편집기 는 Visual Studio Code이며 GitPad를 실행하면 Git의 기본 편집기가됩니다. 질문에 언급 된 문제가 발생하지 않았습니다 (Git은 VS 코드 창이 닫힐 때까지 기다립니다).

( .exe파일 의 링크가 작동하지 않았으므로 소스를 직접 컴파일해야 할 수도 있습니다.)


기본 편집기로 무엇을 지적 했습니까? 나는 여기에 설명 된 것을 사용하려고했습니다 : donovanbrown.com/post/2015/07/07/… 그러나 그것은 작동하고 싶지 않습니다. 코드가 업데이트됨에 따라 변경 될 수 있으므로 특정 exe를 가리키고 싶지는 않습니다.
게리 이완 파크

1
내가 한 때 @Gary, 내가 특정 파일을 가리 키도록하지 않았다, 코드 목록에 있었다 Right click> Open with> Chose another app. 설치시 스스로 등록하고 쉘이 찾을 수 있도록 모든 업데이트로 레지스트리를 업데이트 할 것으로 기대 하지만 레지스트리에서 "코드로 열기"컨텍스트 메뉴 항목 이외의 다른 것을 찾을 수 없습니다. 그래서 나는 이것에 대한 명확한 대답이 없습니다. 죄송합니다.
Şafak Gür

흠, 그것은 이상하다, 내가 할 때 나타나는 목록에 항목으로 코드가 없다.
게리 이완 파크


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'
rjt011000

0

이 작업을 수행 할 수 있는지 확실하지 않지만 gitconfig 파일에서 이러한 추가를 시도 할 수 있습니다.

Visual Studio 코드 실행 파일을 가리 키도록 kdiff3을이 값에서 바꾸십시오.

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


내 질문에서 언급했듯이 Visual Studio Code 가이를 수행하는 방법을 알지 못하기 때문에 병합이 지원되지 않을 것이라고 생각합니다. diff 및 메시징을 수행 할 수 있다고 생각합니다.
게리 이완 파크

0

.txt 파일을 열려면 Visual Studio Code를 기본값으로 설정했습니다. 그리고 다음은 간단한 명령을 사용했습니다 git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'". 그리고 모든 것이 잘 작동합니다.


0

Mac 터미널 앱에서이 명령을 실행하십시오.

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

2
빈 커밋 메시지로 인해 커밋을 중단하면 다음과 같은 오류 메시지가 나타납니다. 대기 플래그를 추가해야합니다. 예를 들어 --wait입니다.
Belfield

0

64 비트 내부자 버전을 사용하는 Windows 10에서 명령은 다음과 같아야합니다.

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

또한 'Program Files'디렉토리에서 'code-insiders.cmd'의 이름을 'code.cmd'로 바꿀 수 있습니다. 이런 방식으로 이제 'code'명령을 사용할 수 있습니다. 에서 파일 편집을 시작합니다. 예배 규칙서

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.