Windows에서 Git과 함께 작동하도록 편집기를 설정하려면 어떻게해야합니까?


561

Windows 에서 Git을 시도하고 있습니다. "git commit"을 시도하는 시점에이 오류가 발생했습니다.

터미널이 바보이지만 VISUAL 또는 EDITOR가 정의되지 않았습니다. -m 또는 -F 옵션을 사용하여 메시지를 제공하십시오.

그래서 EDITOR라는 환경 변수가 필요하다는 것을 알았습니다. 문제 없어요. 메모장을 가리 키도록 설정했습니다. 거의 효과가있었습니다. 기본 커밋 메시지가 메모장에서 열립니다. 그러나 메모장은 기본 피드를 지원하지 않습니다. 나가서 메모장 ++를 얻었습니다. 지만 %EDITOR%예상대로 Git과 작동하는 방식 으로 Notepad ++를 설정하는 방법을 알 수 없습니다 .

메모장 ++와 결혼하지 않았습니다. 이 시점에서 내가 사용하는 편집기는 상관 없습니다. 편집기에서 커밋 메시지입력 하고 싶습니다.명령 줄 (with -m)이 아닌 .

Windows에서 Git을 사용하는 사람들 : 커밋 메시지를 편집하는 데 어떤 도구를 사용하고 작동 시키려면 어떻게해야합니까?


7
TLDR : 에디터 실행 파일의 경로를 작은 따옴표로 묶습니다
yoyo

아마 도움이되지 않지만 FWIW, 나는 단지 일반 메모장을 사용합니다. 나는 그것을 작동시키지 않았습니다. 그것은 기본적으로 상자 밖으로 작동했습니다 ...
BrainSlugs83

11
2015 년 9 월 업데이트 : git config core.editor notepad이제 간단 합니다. 아래의 업데이트 된 답변을 참조하십시오 .
VonC September

JEdit은 git에 적합한 편집기가 아닙니다. JEdit은 여러 파일에 대해 하나의 인스턴스 만 엽니 다. 이미 열려있는 경우 git은 새 파일을 열게하지만 git이 계속되기 전에 JEdit을 완전히 닫아야합니다. JEdit가 커밋 메시지를 편집하기 위해 별도의 인스턴스를 열게하는 명령 줄 옵션이 없습니다.
GrantRobertson

Sublime Text 3을 좋아하는 사람을 위해 Windows 및 Linux에 대한 구성 방법에 대한 지침은 다음과 같습니다. Sublime Text 3를 git 편집기로 설정하는 가장 좋은 설정 (Windows 및 Linux 지침) . 텍스트 편집기를 사용하는 경우 @yoyo, TLDR : 편집기 실행 파일 경로에 작은 따옴표를 넣고 경로 이름에 슬래시 (/)를 사용하지 말고 슬래시 (/)를 사용하십시오.
Gabriel Staples

답변:


562

2015 년 9 월 업데이트 (6 년 후)

Windows 용 git (2.5.3)마지막 릴리스 에는 다음이 포함됩니다.

구성함으로써 git config core.editor notepad사용자 는 이제 notepad.exe기본 편집기로 사용할 수 있습니다 . 메모장 래퍼가
구성 git config format.commitMessageColumns 72을 선택하고 커밋 메시지를 사용자가 편집 한 후 줄 바꿈합니다.

Johannes Schindelin ( )의 커밋 69b301b 를 참조하십시오 .dscho

그리고 Git 2.16 (Q1 2018)은 편집기를 숨길 때 숨겨져 있거나 사용자가 길을 잃을 경우를 대비하여 편집기를 생성 할 때 사용자가 편집을 마치기를 기다리고 있다는 메시지를 표시합니다.

참조 abfb04d 커밋 (07 년 12 월 2017), 및 a64f213 커밋 에 의해 (2017 11월 29일) 라스 슈나이더 ( larsxschneider) .
도움 : Junio ​​C Hamano ( gitster) .
(의해 병합 - Junio C 하마노 gitster-0c69a13 커밋 2,017 19 십이)

launch_editor(): Git이 사용자 입력을 기다린다는 것을 나타냅니다

GIT_EDITOR열려 있고 사용자 입력을 기다리는 Git 명령에 의해 그래픽 이 생성 될 때 (예 : " git rebase -i") 다른 창에 의해 편집기 창이 가려 질 수 있습니다.
사용자는 Git을 진행하기 전에 다른 창과 상호 작용해야한다는 것을 인식하지 않고도 원래 Git 터미널 창을 응시할 수 있습니다. 이 사용자에게는 Git이 걸려있는 것처럼 보입니다.

터미널이 마지막 줄 지우기를 지원하는 경우 Git이 원래 터미널에서 편집기 입력을 기다리고 있다는 메시지를 인쇄하고 편집기가 리턴 될 때이를 제거하십시오.


원래 답변

방금 git 버전 1.6.2.msysgit.0.186.gf7512 및 메모장 ++ 5.3.1로 테스트했습니다.

내가 선호 하지 내가 노력 있도록, 편집기 변수를 설정해야합니다 :

git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"

그것은 항상 다음을 제공합니다.

C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.

내가 포함하여 npp.bat를 정의하면 :

"c:\Program Files\Notepad++\notepad++.exe" %*

그리고 나는 입력 :

C:\prog\git>git config --global core.editor C:\prog\git\npp.bat

DOS 세션에서만 작동 하지만 git shell 에서는 작동 하지 않습니다 .
(core.editor 구성 메커니즘을 사용하면 " start /WAIT..."가 포함 된 스크립트가 작동하지 않고 새 DOS 창만 열 수 있습니다)


Bennett의 답변 은 스크립트 추가를 피할 수 있지만 간단한 인용 부호 사이 에서 프로그램 자체 직접 참조하는 가능성을 언급 합니다 . 슬래시 방향에주의하십시오! 사용 /하지 \경로 이름에 별도의 폴더에!

git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

또는 64 비트 시스템 인 경우 :

git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

그러나 나는 스크립트를 사용하는 것을 선호합니다 (아래 참조) : 다시 등록하지 않고도 다른 경로 또는 다른 옵션으로 재생할 수 있습니다 git config.


실제 솔루션 (스크립트 사용)은 다음을 인식하는
것이 었습니다. 구성 파일에서 참조하는 것은 실제로/bin/sh DOS 스크립트가 아니라 쉘 ( ) 스크립트입니다.

작동하는 것은 다음과 같습니다.

C:\prog\git>git config --global core.editor C:/prog/git/npp.bat

C:/prog/git/npp.bat:

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

또는

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

이 설정 git config --global --edit으로 DOS 또는 Git Shell에서 ' git rebase -i ...'를 수행 하거나 DOS 또는 Git Shell에서 ' '를 수행 할 수 있습니다 .
봇 명령은 새로운 notepad ++ 인스턴스를 트리거합니다 (따라서-multiInst '옵션') 계속 진행하기 전에 해당 인스턴스가 닫힐 때까지 기다립니다.

'가 아닌 \' / '만 사용합니다 . 그리고 옵션 2를 사용하여 msysgit을 설치했습니다 ( 환경 변수에 git\bin디렉토리를 추가 PATH하지만 일부 내장 Windows 도구를 무시하지 않음)

notepad ++ 래퍼가 .bat라는 사실은 중요하지 않습니다.
이름을 'npp.sh'로 지정하고 [git]\cmd디렉토리 (또는 PATH 환경 변수가 참조 하는 디렉토리) 에 두는 것이 좋습니다.


또한보십시오:


lightfire228 은 주석에 추가합니다 :

N ++에서 빈 파일을 열고 git가 커밋 메시지를받지 않는 문제가있는 사람은 " 빈 메시지로 인해 커밋 중단 ": .bat또는 .sh파일을 다음 과 같이 변경하십시오 .

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

그러면 메모장 ++에 비어있는 새 파일 대신 임시 커밋 파일을 열도록 지시합니다.


쉘 스크립트에서 $ * 주위에 큰 따옴표가 필요합니다. 그렇지 않으면 공백이있는 경로에서는 제대로 작동하지 않습니다. 철저한 설명에 감사드립니다-프로그래머를 시작하기 위해 Windows에 git (및 기타 여러 가지)을 설치하고 있으며 vi 명령을 배우지 않고도 명령 줄을 시작하기가 어렵습니다.
Sarah Mei

또 다른 구체적인 예 : stackoverflow.com/questions/1634161/…
VonC

1
Bennett의 답변에 따라 스크립트를 만들 필요가 없으며 따옴표 안에 '아포스트로피를 사용할 수 있습니다.
Tobias Kienzler

@Tobias : 사실, 내 답변에 스크립트를 참조하는 이유와 내 대답을 포함 시켰습니다 git config.
VonC

6
@NateGlenn 단축 된 dir /X" PROGRA~2"for " Program Files (x86)"를 사용하십시오. 이는 Windows에서 크로스 플랫폼 호환 도구를 사용할 때 들어가는 습관이며 공백을 제거 할 수 있습니다.
JJ Zabkar

300

바탕 대런의 대답 사용 메모장 + + 당신은 단순히 (모두 한 줄에) 이렇게 할 수 있습니다에 :

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

분명히 그 C:/Program Files/Notepad++/notepad++.exe부분은 시스템에서 Notepad ++ 실행 파일의 경로 여야합니다. 예를 들어, 일 수 있습니다 C:/Program Files (x86)/Notepad++/notepad++.exe.

그것은 나를 위해 매력처럼 작동합니다.


10
나도! BTW, 이러한 스위치는 C : / Program Files / Notepad ++ / user.manual / documentation / notepad-user-manual / command-line.html에 설명되어 있습니다
Andrew Swan

23
`C : \ Program Files (x86)`에있는 메모장 ++를
mindless.panda

8
x64 Windows의 경우 : git config --global core.editor " 'C : / Program Files (x86) / Notepad ++ / notepad ++. exe'-multiInst -notabbar -nosession -noPlugin"
Dariusz

4
나는이 파티에 늦었다는 것을 알고 있지만, 호기심 때문에, 왜 "-notabbar"를 지정할 것인지 아는 사람이 있습니까? 다른 매개 변수의 이유를 이해하지만 (실제로 "-noPlugin"인 이유는 확실하지 않습니다)이 매개 변수는 아닙니다.
Wilson F

11
@WilsonF 그 이유는 git이 입력 대기를 멈추고 계속하려면 notepad ++를 종료해야하기 때문입니다. 이 Notepad ++ 인스턴스에서 다른 탭을 열지 않으 려면 git 세션이 고정 된 것처럼 보이기 때문에! 이러한 설정은 정확히 옳습니다 : 메모장 ++이 이미 열려 있으면 새 인스턴스가 생겨 다른 파일을 열 수 없으며 git가 편집을 완료했음을 알기 위해 완료되면 닫아야합니다 . 커밋 메시지에 대해 동일하게 작동합니다.
ErikE

50

어쨌든, 나는 이것으로 놀고 있었고 다음이 나를 위해 잘 작동한다는 것을 알았습니다.

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

나는 CMD가 작은 따옴표를 좋아한다고 생각하지 않으므로 "공백 포함 문자열 인수를 지정하려면"큰 따옴표를 사용해야합니다.

Cygwin에서 반면에 (내가 믿는 망할 놈의 강타를위한 기본 플랫폼입니다) 모두 좋아 '하고 "; 문자열이 인용되는 한 (예 : 작은 따옴표를 사용하여) 문자열 /대신을 사용하여 CMD와 유사한 경로를 지정할 수 있습니다 \.

-m오버라이드 (override) / 여러 편집자의 사용을 표시하고, 필요가없는 %*말에 압정으로 고정은.


작은 따옴표 / 큰 따옴표 설명에 감사드립니다.
패트릭 맥도날드

3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"나를 위해 매력처럼 작동합니다.
Vlad Holubiev

`git config --global code.editor " 'C : \\ Program Files \\ Sublime Text 3 \\ sublime_text.exe'-n -w -m"`을 사용했지만 "git commit"을 실행하면 열립니다. 메모장 편집기. 이것이 왜 그런지에 대한 생각이 있습니까? 미리 감사드립니다.
라이언 체이스

@RyanChase ./git/config에서 로컬 설정 항목을 제거하십시오.editor = notepad
Ricky Boyce

1
Git Bash는 Cygwin이 아닌 MingW64에서 실행됩니다. Cygwin에는 자체 Git 바이너리가 있습니다.
Hans Deragon

27

편집 : Vim 7.3으로 업데이트 한 후, 가장 깨끗하고 쉬운 방법은 다음과 같습니다.

  1. Vim의 메인 폴더를 경로에 추가하십시오 ( 내 컴퓨터속성고급환경 변수를 마우스 오른쪽 버튼으로 클릭하십시오 )

  2. 이것을 실행하십시오 :

    git config --global core.editor "gvim --nofork '%*'"
    

이 방법으로 수행하면 Cygwin에서도 작동합니다.

원래 답변 :

몇 가지 Vim 관련 답변이 있어도 Windows에서 gVim과 함께 작동하는 데 문제가있었습니다 (일괄 파일 또는 % EDITOR % 또는 Cygwin을 사용하지 않는 동안).

내가 마침내 도착한 것은 훌륭하고 깨끗하며 여기에 몇 가지 솔루션에서 나온 것입니다.

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

시간이 걸리는 한 가지는 Windows 스타일 백 슬래시가 아니라는 것입니다. 그것들은 정상적인 슬래시입니다.


1
에 vim이 설치되어 있으면 Program Files(x86)경로를 분명히 변경해야합니다.
스왑 닐

15

메모장 ++은 메모장, -m 또는 때로는 내장 된 "편집"을 고수하기로 선택했지만 정상적으로 작동합니다.

Notepad ++를 사용하면서 발생하는 문제는 Git이 편집기 실행 파일을 시작하는 방법과 관련이 있습니다. 이에 대한 나의 해결책은 환경 변수 EDITOR를 실제 편집기 실행 파일이 아닌 배치 파일 로 설정 하여 다음을 수행하는 것입니다.

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAIT응용 프로그램이 종료 될 때까지 명령 줄 세션이 중지되도록 지시하므로 Git이 행복하게 기다리는 동안 마음의 내용을 편집 할 수 있습니다. % *는 모든 인수를 배치 파일에 메모장 ++로 전달합니다.

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

powershell에서 작동하게하는 데 문제가있었습니다. 이 방법 ( stackoverflow.com/questions/10564/… )은 정상적으로 작동했습니다.
피터 스티븐스

11

워드 패드 !

Vim을 사용하는 것이 행복하지만 회사에 Git을 소개하려고하면서 우리 모두가 원하는 것을 원했고 워드 패드가 제대로 작동하는 것 같습니다 (예 : Git은 편집을 마치고 닫을 때까지 기다립니다 창).

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

msysgit에서 Git Bash를 사용하고 있습니다. Windows 명령 프롬프트에서 시도하지 않았습니다 (차이가있는 경우).


나는 이것의 단순함을 좋아했지만 즉시 사용할 수는 없었다. 여기 내가 시도한 것이 있습니다. 다음과 같은 오류 메시지가 나타납니다. 오류 : 'C : \ Program Files \ Windows NT \ Accessories \ wordpad.exe'편집기에 문제가있었습니다.
Shaun Luttin

3
따옴표가 잘못되었습니다. 큰 따옴표작은 따옴표 밖에 두어야 합니다 . 즉, " 'C : \ Program Files \ Windows NT \ Accessories \ wordpad.exe'"를 사용하면 작동합니다.
Shaun Luttin

백 슬래시 (\) 대신 슬래시 (/)를 사용할 수도 있습니다.
Chris Jones

1
또한 "git config"대신 "git config --global"을 사용하는 것이 가장 좋습니다. 현재 설정이 아닌 워크 스테이션의 모든 git 리포지토리에 설정을 적용하려고합니다.
Chris Jones

@ChrisJones,이 경우 "프로그램 파일"사이에 공백이 있기 때문에 아무 의미가 없습니다.
Pacerier

9

또한 Windows에서는 Cygwin을 사용하지만 터미널 기반 Vim 과는 반대로 gVim과 함께 사용 합니다.

이 작업을 수행하기 위해 다음을 수행했습니다.

  1. git_editor.bat다음을 포함 하는 한 줄짜리 배치 파일 ( )을 만들었습니다 . "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. 에 배치 git_editor.bat했습니다 PATH.
  3. 세트 GIT_EDITOR=git_editor.bat

이 작업을 수행하면 git commit등이 gVim 실행 파일을 올바르게 호출합니다.

참고 1 : --noforkgVim 옵션은 커밋 메시지가 작성 될 때까지 차단되도록합니다.

참고 2 : 경로에 공백이 있으면 gVim 경로 주위에 따옴표가 필요합니다.

참고 3 : Git에 공백이있는 파일 경로를 전달할 경우를 대비하여 "% *"따옴표가 필요합니다.


cygwin의 git이 아닌 msysgit을 사용하는 사람들에게는 이것을 조금 단순화 할 수있었습니다. stackoverflow.com/questions/10564/…
Nick Knowlson

두 번째로 그것은 cygwin과 함께 작동 할 수도 있다고 생각했지만, 확실하지 않습니다
Nick Knowlson

8

Stack Overflow 커뮤니티 덕분에 ... 약간의 연구를 통해 Windows XP SP3에서 msysgit 1.7.5.GIT 및 TortoiseGit v1.7.3.0 을 사용하여 내가 좋아하는 편집기 인 EditPad Pro 를 핵심 편집기로 사용할 수있었습니다. ..

위의 조언에 따라 코드 편집기의 Bash 스크립트 경로를 추가했습니다 ...

git config --global core.editor c:/msysgit/cmd/epp.sh

그러나 위에서 언급 한 솔루션에 여러 번 실패한 후 ...이 작업을 마침내 수행 할 수있었습니다. EditPad Pro의 문서에 따라 '/ newinstance'플래그를 추가하면 쉘이 편집기 입력을 기다릴 수 있습니다 ...

내 경우 ' / newinstance '플래그가 핵심이었습니다 ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"

예, newinstance 매개 변수에 대한 이중 슬래시는 Editpad의 문서에 있어야합니다. 여기에 주목 해 주셔서 감사합니다!
gwideman

EditPad Pro에는 /newinstance정확히 하나의 슬래시가있는 것과 같은 명령 행 스위치가 필요합니다 . 이것은 Windows 응용 프로그램에서 상당히 정상입니다. UNIX 쉘에서 EditPad를 호출하는 경우 쉘이 슬래시를 이스케이프 처리하기 위해 제공하는 모든 메커니즘을 사용해야 스위치가 절대 경로로 표시되지 않고 단일 리터럴 슬래시가 EditPad의 명령 행에 전달됩니다.
Jan Goyvaerts

2
EditPad Pro 7이 있고 EditPad 프로세스를 대기하려는 프로세스에서 EditPad Pro를 호출하려면 /waitEditPad의 명령 줄 에서 스위치를 전달해야 합니다. 새 EditPad 창을 열지 또는 기존 창을 다시 사용해야하는지 여부를 제어 /wait하거나 사용 하지 않고 사용할 수 있습니다 /newinstance. 스크립트에서 시작한 프로세스는 창을 만들 었는지 재사용했는지에 관계없이 파일이 닫힐 때까지 기다립니다. EditPad Pro 6 및 이전 버전은 지원하지 않습니다 /wait.
Jan Goyvaerts

@ JanGoyvaerts ~ /wait깃발 팁 감사합니다 ... :)
Eddie B

위의 지침을 사용하여 EditPad Lite를 사용할 수 없었습니다. 아마도 Git Bash 또는 다른 UNIX 쉘 대신 Windows 터미널을 사용하여 EditPad (Git을 통해)를 호출하려고했기 때문일 수 있습니다. 나를 위해 일한 것은 [core].gitconfig 섹션 을 직접 편집 하여 줄을 포함시키는 것이 었습니다 editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".
user697473

8

원자 를 위해 당신은 할 수 있습니다

git config --global core.editor "atom --wait"

Visual Studio Code 와 유사

git config --global core.editor "code --wait"

커밋 할 수있는 Atom 또는 Visual Studio 코드 창이 열립니다.

또는 숭고한 텍스트 :

git config --global core.editor "subl -n -w"

훨씬 더 간단하고 효과적입니다. 감사합니다.
rom5jp

6

c : \ Users \ YourUser 폴더에서 .gitconfig 파일을 편집하고 다음을 추가하십시오.

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'

6

이것은 더 큰 문제의 하나의 증상입니다. 특히 당신은 뭔가 설정이 TERM=dumb있습니다. 제대로 작동하지 않는 다른 것들은 less완전한 기능을 갖춘 터미널이 없다는 명령입니다.

TERM이 전역 Windows 환경 변수에서 무언가로 설정되어 있기 때문에 가장 일반적으로 발생하는 것 같습니다. 저에게 Strawberry Perl을 설치할 때 문제가 발생 했습니다. 이 문제 에 대한 정보는 여러 가지 솔루션뿐만 아니라이 문제msysgit 버그에 있습니다.

첫 번째 해결책은 다음을 추가하여 ~ / .bashrc에서 수정하는 것입니다.

export TERM=msys

Git Bash 프롬프트에서 다음과 같이 할 수 있습니다 :

echo "export TERM=msys" >> ~/.bashrc

TERM=dumb내 환경 설정 에 추가 하는 Strawberry Perl의 이유에 신경 쓰지 않기 때문에 궁극적으로 내가 한 다른 솔루션 은 msysgit 버그 보고서에 대한이 의견의 지시에TERM=dumb 따라 제거하는 것 입니다 .

제어판 / 시스템 / 고급 / 환경 변수 ... (또는 Windows 버전에 따라 유사)는 Windows에서 고정 환경 변수가 설정되는 곳입니다. TERM은 기본적으로 설정되어 있지 않습니다. TERM이 설정되어 있으면 사용자 또는 설치 한 프로그램 중 하나 (예 : Strawberry Perl)가 설정 한 것입니다. 해당 설정을 삭제하면 괜찮을 것입니다.

마찬가지로 Strawberry Perl을 사용하고 CPAN 클라이언트 또는 이와 유사한 것을 신경 쓰면 ~ / .bashrc 파일에서 TERM=dumb단독으로 남겨두고 unset TERM위와 같이 명시적인 용어를 설정하는 것과 비슷한 효과를 낼 수 있습니다.

물론 다른 모든 솔루션은 git config --global core.editor $MYFAVORITEEDITORGit이 원하는 편집기를 실행해야 할 때 좋아하는 편집기를 사용 하도록 하는 데 사용할 수있는 올바른 방법입니다 .


너무 많이! 나는 딸기 펄 때문에이 문제를 겪었고 그것은 나를 미치게했다! 이것을 지적 해
주셔서 감사


4

PortableGit 1.6이 제대로 작동했지만 PortableGit 1.7 Windows 릴리스로 업그레이드 한 후 문제가 발생했습니다. Git 명령 중 일부는 Notepad ++. exe를 열 수 있지만 일부 Git 리베이스는 다르게 동작합니다.

문제는 일부 명령이 Windows cmd 프로세스를 실행하고 일부 명령은 Unix cmd 프로세스를 사용한다는 것입니다. 메모장 + + 편집기에 시작 속성을 지정하고 싶기 때문에 사용자 정의 스크립트가 필요합니다. 내 해결책은 이것입니다.

  1. 적절한 텍스트 편집기를 실행하는 스크립트를 작성하십시오. 스크립트가 이상하게 보이지만 Windows와 Unix 변형을 모두 처리합니다.

    c : /PortableGit/cmd/git-editor.bat

    #!/bin/sh
    # Open a new instance
    
    function doUnix() {
      "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
      exit
    }
    
    doUnix $*
    
    :WINCALL
    "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
    
  2. 글로벌 core.editor 변수 설정

    스크립트는 git / cmd 폴더에 저장되었으므로 이미 gitconsole 경로에 있습니다. 전체 경로가 제대로 작동하지 않을 수 있으므로 필수입니다.

    git config --global core.editor "git-editor.bat"
    

이제 git commit -agit rebase -i master 명령을 실행할 수 있습니다. Git Windows 도구에 문제가 있으면 사용해보십시오.


4

여러 플랫폼에서 Git을 사용하고 모든 Git 설정에 동일한 Git 설정을 사용하고 싶습니다. (실제로, 모든 구성 파일을 Git에서 릴리스 제어하에두고 각 시스템에 Git 리포지토리 복제본을 넣습니다.) 해결책은 다음과 같습니다.

편집기giteditor로 설정 했습니다.

git config --global core.editor giteditor

그런 다음 PATHgiteditor 라는 기호 링크를 만듭니다 . (개인 bin 디렉토리가 있지만 PATH의 아무 곳이나 작동합니다.) 해당 링크는 현재 선택한 편집기를 가리 킵니다. 다른 컴퓨터와 다른 플랫폼에서는 다른 편집기를 사용하므로 범용 Git 구성 ( .gitconfig ) 을 변경할 필요가 없으며 giteditor가 가리키는 링크 만 변경할 수 있습니다.

심볼릭 링크는 내가 아는 모든 운영 체제에서 처리하지만 다른 명령을 사용할 수도 있습니다. Linux의 경우 ln -s 를 사용하십시오 . Windows의 경우 cmd 내장 mklink 를 사용하십시오 . 그것들은 다른 구문 (당신이 찾아봐야 함)을 가지고 있지만 실제로는 모두 같은 방식으로 작동합니다.


실제로, 나는 이것을 Windows7에서 시도했지만 msys git에서는 작동하지 않습니다. 그것은 말한다error: cannot spawn giteditor: No such file or directory
DanielSank

4

를 기반으로 VonC의 제안 , 나를 위해 일한이 (나를 미치게되었다)

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

생략 -wait하면 특히 Gerrit에 대해 작업하고 커밋 메시지의 맨 아래에 수동으로 복사해야하는 ID를 변경 하는 경우 문제가 발생할 수 있습니다 .


4

Git이 Windows에서 Notepad ++를 시작하려면 다음 두 가지를 모두 수행해야 했습니다.

  • .gitconfig에 다음을 추가하십시오.

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • 바로 가기를 수정하여 Git Bash 셸을 시작하여 관리자 권한으로 실행 한 다음이를 사용하여 Git Bash 셸을 시작하십시오. 컨텍스트 메뉴 항목 "Git Bash here"가 필요한 권한으로 메모장 ++를 시작하지 않았을 것으로 추측했습니다.

위의 두 가지를 모두 수행 한 후 작동했습니다.


3

Windows에서 Cygwin 을 사용 하므로 다음을 사용합니다.

export EDITOR="emacs -nw"

-nw입니다 no-windows즉, 시도하고 사용하지 이맥스 말해, X 창 .

Emacs 키 바인딩은 Windows 쉘에서 작동하지 않으므로 Cygwin 쉘에서만 사용합니다 ... ( rxvt 권장)


3

이것은 Geany 를 Git의 편집기로 사용하기위한 설정입니다 .

git config --global core.editor C:/path/to/geany.bat

다음 내용으로 geany.bat:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

DOS 콘솔과 msysgit에서 모두 작동합니다.


2
VonC가 notepad ++에 대해 답변했는데 Geany에 대한 대답은 무엇입니까?
CharlesB

2

경로에 공백이 있으면 Git이 편집기를 찾지 못하는 것처럼 보입니다. 따라서 Patrick의 답변 에 언급 된 배치 파일을 공백이 아닌 경로 에 넣어야합니다 .


3
이 형식은 공간과 경로에 대한 벌금을 작동 : 자식 설정 --global core.editor "\"C : \ 프로그램 파일 \ TextPad를 5 \ textpad.exe \ ""당신이 배치 파일을 만들지 않도록하는 것이 실용적 일 수 있도록

2

Git이 WordPad , Komodo Edit 및 내가 제공하는 거의 모든 편집기와 협력하는 데 어려움을 겪었 습니다. 편집을 위해 대부분 열려 있지만 Git은 저장 / 닫기가 발생할 때까지 기다리지 않습니다.

목발로서, 나는 방금

git commit -m "Fixed the LoadAll method"

물건을 계속 움직입니다. 커밋 메시지를 예상보다 조금 짧게 유지하는 경향이 있지만 Windows 버전의 Git에서 수행해야 할 작업이 분명히 있습니다.

GitGUI도 그렇게 나쁘지 않습니다. 약간의 방향이 필요하지만 그 후에는 꽤 잘 작동합니다.


2

저는 이맥스를 선호합니다. 설정하는 것은 약간 까다로울 수 있습니다.

  1. Emacs를 다운로드하고 다음과 같이 압축을 풉니 다 c:\emacs.
  2. 를 실행하십시오 c:\emacs\bin\addpm.exe. Windows Vista 이상을 사용하는 경우 마우스 오른쪽 단추를 클릭하고 "관리자 권한으로 실행"을 수행해야합니다. 그러면 실행 파일이 경로에 배치됩니다.
  3. 파일 (server-start)어딘가에 추가 .emacs하십시오. 파일 을 넣을 위치에 대한 조언 은 Emacs Windows FAQ 를 참조하십시오 .emacs.
  4. git config --global core.editor emacsclientw

Git은 이제 기존 Emacs 프로세스 내에서 파일을 엽니 다. 에서 기존 프로세스를 수동으로 실행해야 c:\emacs\bin\runemacs.exe합니다.


1

따옴표와을 사용하여 EDITOR 변수를 설정하여 환경 버전이 작동하도록했습니다 /.

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"

1

방금 같은 문제가 있었고 다른 해결책을 찾았습니다. 나는 얻고 있었다

error: There was a problem with the editor 'ec'

나는 한 줄을 포함하는 경로에 VISUAL=ec배치 파일을 배치했습니다 ec.bat.

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

이 명령을 사용하여 명령 줄에서 파일을 편집 할 수 ec <filename>있으며 VISUAL설정하면 대부분의 유닉스 프로그램도 파일을 가져옵니다. 내가 바라 보았다 때 - 힘내 내 다른 명령하지만 다르게 경로를 검색하는 것 git commit모니터 프로세스 나는 그것이의 경로에있는 모든 폴더에 찾아보고 ec및 위해 ec.exe에 대한,하지만 ec.bat. 다른 환경 변수 ( GIT_EDITOR=ec.bat)를 추가 했으며 모두 괜찮 았습니다.


1

멋진 시각적 옵션 인 Windows 용 GitHub를 사용하고 있습니다. 그러나 명령 줄을 선호하므로 Git 셸에서 리포지토리를 열 때 작동하도록하려면 다음을 설정하십시오.

git config --global core.editor vim

잘 작동합니다.



1

나는 여기에 게시 된 매우 간단한 해결책을 발견했습니다 .저자가 제공 한 "subl"파일을 복사 해야하는 경로에 실수가있을 수는 있지만 .

Windows 7 x64를 실행 중이고 "subl"파일을 /Git/cmd/ 폴더에 작동시켜야합니다.

그래도 매력처럼 작동합니다.


1

원자와 Windows 10

  1. 바탕 화면에서 Atom 아이콘을 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭했습니다.
  2. "시작"위치 경로를 복사했습니다.
  3. Windows 탐색기에서 저쪽을보고 "atom.exe"를 찾았습니다.
  4. 나는 이것을 Git Bash에 입력했다.

    git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
    

참고 :에 \대해 모두 변경 했습니다 /. 내 홈 디렉토리에 .bashrc를 작성하고 홈 디렉토리 /를 설정 하는 데 사용 했는데 제대로 작동했습니다./ 갈 길이 .


URL을 확인 하여 콘텐츠 품질을 높이는 데 유용합니다
Willie Cheng

@ willie 감사합니다. 텍스트 형식을 지정하고 태그를 추가했습니다. 그것이 조금 개선되기를 바랍니다.
Jonathan Ramos

0

Cygwin의 솔루션은 다음과 같습니다.

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. 경로가 없으면 경로를 전달하지 마십시오.

  2. 경로가 비어 있으면 빈 경로를 전달하십시오.

  3. 경로가 비어 있지 않으면 Windows 형식으로 변환하십시오.

그런 다음이 변수를 설정했습니다.

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR는 스크립트가 Git과 함께 작동하도록합니다

  2. GIT_EDITOR는 스크립트가 허브 명령 과 작동하도록 합니다

출처


0

Cygwin 및 TextPad를 사용하여 나를 위해 노력하고 있습니다. 6 (편집 : 스크립트를 명백히 변경하는 한 TextPad 5에서도 작동합니다)을 효과적이며 다른 편집기에서도 모델을 사용할 수 있습니다.

파일 ~/.gitconfig:

[core]
    editor = ~/script/textpad.sh

파일 ~/script/textpad.sh:

#!/bin/bash

APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w $1`

"$APP_PATH" -m "$FILE_PATH"

이 단일 라이너도 작동합니다.

파일 ~/script/textpad.sh(옵션 2) :

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"

0

이것은 나를 위해 일했다 :

  1. 편집기의 실행 파일이 들어있는 디렉토리를 PATH 변수에 추가하십시오. (예 : "C : \ Program Files \ Sublime Text 3 \" )
  2. 컴퓨터를 재부팅하십시오.
  3. core.editor 전역 Git 변수를 확장자가 '.exe'인 편집기 실행 파일 이름으로 변경하십시오 (예 : git config --global core.editor sublime_text)

그게 다야!

참고 : Sublime Text 3은이 예제에서 사용한 편집기입니다.


이 방법으로 구성하면 Sublime Text 3가 여러 인스턴스를 열거 나 git이 편집의 끝을 알리기 위해 인스턴스를 닫아야한다는 사실을 처리합니까?
James World

1
새 창을 열 것이라고 생각합니다. --wait 스위치를 추가 할 수 있습니다 ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.