답변:
이 텍스트 파일에 커밋 메시지를 넣은 다음 저장하고 종료합니다.
다음 명령으로 git이 사용하는 기본 텍스트 편집기를 변경할 수 있습니다.
git config --global core.editor "nano"
일반적으로 텍스트 편집기를 여는 명령으로 nano를 변경해야합니다.
--global현재 사용자를 위해 설정을 --system변경하고 해당 컴퓨터의 모든 사람에 대해 변경합니다.
Ben Collins가 언급했듯이 -m "...", 커밋을 인라인으로 입력하라는 인수가 없는 경우 (일반적으로 간략하게 작성하는 것이 좋습니다.)이 "큰 텍스트 파일"은 커밋 메시지를 입력 할 수있는 창입니다. .
일반적으로 첫 번째 줄에 요약을 작성하고 한 줄을 건너 뛰고 그 아래에 더 자세한 메모를 작성하는 것이 좋습니다. 이것은 적절한 제목 줄과 본문의 전체 변경 목록이 포함 된 커밋 메시지를 이메일로 보내는 프로그램을 지원합니다.
EDITOR셸 변수 를 변경하는 대신 ~/.gitconfig파일에 추가 행을 추가하여 사용되는 편집기를 변경할 수도 있습니다 .
[core]
editor = emacs
excludesfile = /Users/will/.gitignore
그 두 번째 줄은 실제로 문제와는 아무 상관이없는,하지만 난 정말 유용 내 채울 수 있도록 찾을 ~/.gitignore내가 모든 파일 형식으로 파일을 알고있는 나는, 지금, 저장소에 커밋하고 싶지는 않을 것이다.
열려있는 텍스트 파일은 현재 커밋 작업의 요약입니다. git commit은이 파일에 사용자를 드롭하므로 파일 상단에 커밋 메시지를 추가 할 수 있습니다. 메시지를 추가 한 후에는이 파일을 저장하고 종료하십시오.
또한 명령 줄에 커밋 메시지를 추가 할 수있는 "-m msg"스위치가이 명령에 있습니다.
Mac OS X에서 BBEdit를 사용하는 경우이를 커밋 메시지에 대한 편집기로 설정할 수 있습니다.
git config --global core.editor "bbedit -w"
편집이 끝나면 파일을 저장하고 닫으면 git이 주석에 사용합니다.
편집기의 기본값이 vi / vim이라고 가정하면 다음을 입력하여 커밋 메시지 편집기를 종료 할 수 있습니다.
:x
커밋 메시지 파일을 저장하고 종료합니다. 그런 다음 일반 git 명령 섹션으로 돌아갑니다.
추가 vi 명령 :
http://www.lagmonster.org/docs/vi.html
esc입력 :x하기 전에 명령 모드로 들어가려면를 눌러야 합니다.
모두가 말했듯이 이것은 커밋 주석을 추가하는 곳입니다.하지만 일부의 경우 편집기 설정을 구성하지 않았고 VI 가 무엇인지 알지 못하는 경우 여전히 혼란 스러울 수 있습니다. 그러면 충격을받을 수 있습니다. , 당신은 여전히 GIT-Bash에 있다고 생각할 것이기 때문입니다.
이 경우 실제로 텍스트 편집기에서 작업을 처리하는 몇 가지 흥미로운 방법을 사용하고 있으며이 명령 세트는 첫 번째 커밋을 통과 한 다음 익숙한 편집기를 구성하거나 다음과 같이 사용할 수 있도록 도움이 될 수 있습니다. 그것을 사용하는 방법을 배울 수있는 기회.
새 커밋을 만들 때 git은 텍스트 편집기를 실행하고 일부 내용을 작성합니다.
이 텍스트 편집기를 사용하여 feshly 생성 된 커밋과 연결될 커밋 메시지를 작성합니다.
작업을 마친 후 저장하고 텍스트 편집기를 종료합니다. Git은 작성한 내용을 커밋 메시지로 사용합니다.
커밋 메시지에는 다음과 같은 특정 구조가 있습니다.
커밋 메시지의 첫 번째 줄은 메시지 헤더 (또는 제목)로 사용됩니다. 커밋 헤더의 기본 길이는 40 자 미만입니다. github가 잘라 내기 전에 특정 저장소의 커밋 탭에 표시하는 문자 수이므로 일부 사람들은 짜증을냅니다.
머리글을 작성할 때 첫 단어에 대문자로 된 현재 시제 동사를 사용하는 것이 일반적이지만 전혀 필요하지는 않습니다.
하나의 개행은 메시지의 헤더와 본문을 나타냅니다.
몸은 원하는대로 구성 할 수 있습니다. 커밋으로 인한 변경 사항에 대한 개요는 합리적입니다. 일부 타사 응용 프로그램은 커밋 메시지 본문이 포함 된 정보를 사용하여 다양한 종류의 후크를 설정합니다 (저는 Gerrit과 Pivotal Tracker를 두 가지로 생각합니다).
여기에 짧고 달콤한 예가 있습니다. 선행 #은 주석을 나타냅니다.
Gitignore index.pyc
Ignore gunicorn generated binary file
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch dev
# Your branch is ahead of 'origin/dev' by 10 commits.
# (use "git push" to publish your local commits)
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: .gitignore
#
여기 Torvalds 씨가 좋은 커밋을 만드는 것에 대해 의견을 내놓았습니다.
그리고 여기서 Tpope도 마찬가지입니다.
다른 여러 답변에서 언급했듯이 기본 편집기를 변경하는 것은 명령 줄에서 한 줄입니다.
내 선호도 :
git config --global core.editor "vim"
메시지 입력을 마친 후 Escape를 누른 다음 ZZ를 시도하십시오. 다른 사람들이 커밋 명령을 실행할 때 말했듯이 실제로 메시지를 입력하기 위해 텍스트 편집기를 실행합니다. 제 경우 (OS X)는 VI 였는데, 몇 가지 파헤쳐 본 결과 알아 냈습니다. 이 경우 Escape를 눌러 "명령"모드 (INSERT 모드와 반대)로 들어가 ZZ를 입력합니다. 나는 작업을 수행하는 다른 방법이 있다고 확신하지만 그것은 나를 위해 그것을했다. VI 나 emacs를 사용 해본 적이 없어서 쉽게 알 수 없었고 제가 사용하던 초보자 가이드에서 언급되지 않았습니다. 도움이 되었기를 바랍니다.
VIM에서 : w 뒤에 파일 이름을 계속 입력하려고했기 때문에 혼란 스러웠습니다. 커밋을 트리거하지 않습니다. 대신 "빈 커밋 메시지로 인해 커밋 중단"메시지가 계속 나타납니다. : w 뒤에 파일 이름을 넣지 마십시오. : w는 기본적으로 파일을 .git / COMMIT_EDITMSG에 저장합니다. 그런 다음 : q를 종료하여 커밋을 완료합니다. git log로 결과를 볼 수 있습니다.
이제 편집기를 emacs로 변경 했으므로 모든 것이 잘 작동합니다.
그러나 이것을 설정하기 전에 "git commit -a"는 gedit를 열었지만 "빈 커밋 메시지로 인해 커밋 중단"으로 즉시 끝났습니다. gedit에서 파일을 저장해도 효과가 없습니다. "git config --global core.editor"gedit ""로 편집기를 명시 적으로 설정하면 동일한 결과가 나타납니다.
emacs에는 아무런 문제가 없지만 호기심 때문에 gedit와 함께 작동하지 않는 이유는 무엇이며 작동하도록하는 방법이 있습니까?
감사.
git config --global core.editor "gedit -s"
OS XI를 사용하는 사람들은이 명령이 잘 작동한다는 것을 알았습니다.
git config --global core.editor "open -t -W"
그러면 git이 기본 텍스트 편집기 (제 경우에는 textedit)를 열고 응용 프로그램을 종료 할 때까지 기다립니다. 커밋이 진행되기 전에 텍스트 편집을 "저장"한 다음 "종료"해야합니다. 이 페이지에 자세히 설명 된대로 사용할 수있는 몇 가지 다른 명령이 있습니다.
git config --global core.editor "open -e -W"기본 편집기가 무엇이든 관계없이 git이 항상 textedit를 열도록 할 수도 있습니다 .
--global기본값을 변경 하기 위해 추가 할 필요가 없습니까?