답변:
이 텍스트 파일에 커밋 메시지를 넣은 다음 저장하고 종료합니다.
다음 명령으로 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
기본값을 변경 하기 위해 추가 할 필요가 없습니까?