Git 커밋은 빈 텍스트 파일을 엽니 다.


93

모든 Git 튜토리얼에서 그들은 당신이 할 수 있다고 말합니다.

git init
git add .
git commit

그렇게하면 큰 텍스트 파일이 열립니다. 튜토리얼 중 어느 것도이 문제를 다루지 않는 것 같으므로 파일로 무엇을해야하는지 또는 파일에 무엇을 넣을지 모르겠습니다.

답변:


124

이 텍스트 파일에 커밋 메시지를 넣은 다음 저장하고 종료합니다.

다음 명령으로 git이 사용하는 기본 텍스트 편집기를 변경할 수 있습니다.

git config --global core.editor "nano"

일반적으로 텍스트 편집기를 여는 명령으로 nano를 변경해야합니다.


15
--global기본값을 변경 하기 위해 추가 할 필요가 없습니까?
Znarkus

4
@Znarkus 좋은 지적입니다. 자세한 정보는 여기 를 참조 하십시오 . 기본적으로 주어진 대답은 현재 프로젝트의 설정 만 변경하는 반면 --global현재 사용자를 위해 설정을 --system변경하고 해당 컴퓨터의 모든 사람에 대해 변경합니다.
Matt Fenwick

24
이 답변은 좋은 정보를 담고 있지만 실제 질문을 다루지는 않습니다.
아드리안 슈미트

5
실제로 질문에 실제로 대답하는 일부 답변으로 이것이 왜 두 배의 찬성 투표를했는지 모르겠습니다. 그렇지 않습니다.
Johan

2
@Johan, 당신은 틀리지 않았지만 이것을 우연히 발견 한이 대답이 매우 도움이된다는 것을 알았습니다. 그래서 찬성했습니다.
Danation 2014

65

Ben Collins가 언급했듯이 -m "...", 커밋을 인라인으로 입력하라는 인수가 없는 경우 (일반적으로 간략하게 작성하는 것이 좋습니다.)이 "큰 텍스트 파일"은 커밋 메시지를 입력 할 수있는 창입니다. .

일반적으로 첫 번째 줄에 요약을 작성하고 한 줄을 건너 뛰고 그 아래에 더 자세한 메모를 작성하는 것이 좋습니다. 이것은 적절한 제목 줄과 본문의 전체 변경 목록이 포함 된 커밋 메시지를 이메일로 보내는 프로그램을 지원합니다.

EDITOR셸 변수 를 변경하는 대신 ~/.gitconfig파일에 추가 행을 추가하여 사용되는 편집기를 변경할 수도 있습니다 .

[core]
    editor = emacs
    excludesfile = /Users/will/.gitignore

그 두 번째 줄은 실제로 문제와는 아무 상관이없는,하지만 난 정말 유용 내 채울 수 있도록 찾을 ~/.gitignore내가 모든 파일 형식으로 파일을 알고있는 나는, 지금, 저장소에 커밋하고 싶지는 않을 것이다.


36

열려있는 텍스트 파일은 현재 커밋 작업의 요약입니다. git commit은이 파일에 사용자를 드롭하므로 파일 상단에 커밋 메시지를 추가 할 수 있습니다. 메시지를 추가 한 후에는이 파일을 저장하고 종료하십시오.

또한 명령 줄에 커밋 메시지를 추가 할 수있는 "-m msg"스위치가이 명령에 있습니다.


안녕하세요, 저는 GIt의 초보자이기도합니다. 내가 존재하거나 텍스트 파일을 작성하고 존재 한 후에 git은 실제로 스테이징과 내가 방금 작성한 커밋 메시지를 커밋하지 않았다고 생각합니다. 그래서 작성 후 커밋을 할 수없는 경우이 텍스트 파일에 메시지를 추가하는 의미는 무엇입니까? (내가 틀렸다면 고쳐주세요. 많은 감사합니다.)
SLN

@SLN 당신이 설명하는 시나리오는 명확하지 않습니다. 추측을해서 커밋 할 파일을 준비하지 않았기 때문에 커밋하려는 시도가 아무 일도하지 않았다고 제안합니다. 커밋 할 파일을 먼저 준비하려면 "git add"를 사용하고 실제 커밋을 수행하려면 "git commit"을 사용합니다.
Lou

15

Mac OS X에서 BBEdit를 사용하는 경우이를 커밋 메시지에 대한 편집기로 설정할 수 있습니다.

git config --global core.editor "bbedit -w"

편집이 끝나면 파일을 저장하고 닫으면 git이 주석에 사용합니다.


15

편집기의 기본값이 vi / vim이라고 가정하면 다음을 입력하여 커밋 메시지 편집기를 종료 할 수 있습니다.

:x

커밋 메시지 파일을 저장하고 종료합니다. 그런 다음 일반 git 명령 섹션으로 돌아갑니다.

추가 vi 명령 :
http://www.lagmonster.org/docs/vi.html


9
당신이 저와 같으면 삽입 / 바꾸기 모드에있었습니다 (예 : 커밋 메시지 입력). 그렇다면 저장하고 종료하기 위해 esc입력 :x하기 전에 명령 모드로 들어가려면를 눌러야 합니다.
Martin Carney 2011

1
물론 그의 편집기가 vi / vim으로 기본 설정되어 있다고 가정합니다. 이것은 모든 사람에게 사실이 아닙니다.
확실히이

이것은 나에게 많은 문제를 해결했습니다. 아주 아주 감사합니다
Danation

12

모두가 말했듯이 이것은 커밋 주석을 추가하는 곳입니다.하지만 일부의 경우 편집기 설정을 구성하지 않았고 VI 가 무엇인지 알지 못하는 경우 여전히 혼란 스러울 수 있습니다. 그러면 충격을받을 수 있습니다. , 당신은 여전히 ​​GIT-Bash에 있다고 생각할 것이기 때문입니다.

이 경우 실제로 텍스트 편집기에서 작업을 처리하는 몇 가지 흥미로운 방법을 사용하고 있으며이 명령 세트는 첫 번째 커밋을 통과 한 다음 익숙한 편집기를 구성하거나 다음과 같이 사용할 수 있도록 도움이 될 수 있습니다. 그것을 사용하는 방법을 배울 수있는 기회.


8
난 항상 :) 나를 충격 VI에서 끝나는 알고
윌 로버트슨

1
이제 상황이 훨씬 더 의미가 있습니다. +1
Matt Ellen

11

-m커밋 옵션을 사용하면 입력 명령 줄에 메시지를 커밋 할 수 있습니다 :

git commit -m "my first commit"

7

새 커밋을 만들 때 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"

2
이 질문에 대한 답변이어야합니다.
mppfiles

6

메시지 입력을 마친 후 Escape를 누른 다음 ZZ를 시도하십시오. 다른 사람들이 커밋 명령을 실행할 때 말했듯이 실제로 메시지를 입력하기 위해 텍스트 편집기를 실행합니다. 제 경우 (OS X)는 VI 였는데, 몇 가지 파헤쳐 본 결과 알아 냈습니다. 이 경우 Escape를 눌러 "명령"모드 (INSERT 모드와 반대)로 들어가 ZZ를 입력합니다. 나는 작업을 수행하는 다른 방법이 있다고 확신하지만 그것은 나를 위해 그것을했다. VI 나 emacs를 사용 해본 적이 없어서 쉽게 알 수 없었고 제가 사용하던 초보자 가이드에서 언급되지 않았습니다. 도움이 되었기를 바랍니다.


4

git commit명령은 EDITOR커밋 주석을 입력 할 수 있도록 환경 변수에 지정된 편집기를 엽니 다 . Linux 또는 BSD 시스템에서는 모든 편집기가 작동하더라도 기본적으로 vi 여야합니다.

의견을 입력하고 파일을 저장하십시오.


2

VIM에서 : w 뒤에 파일 이름을 계속 입력하려고했기 때문에 혼란 스러웠습니다. 커밋을 트리거하지 않습니다. 대신 "빈 커밋 메시지로 인해 커밋 중단"메시지가 계속 나타납니다. : w 뒤에 파일 이름을 넣지 마십시오. : w는 기본적으로 파일을 .git / COMMIT_EDITMSG에 저장합니다. 그런 다음 : q를 종료하여 커밋을 완료합니다. git log로 결과를 볼 수 있습니다.


또는 : x를 사용하여 저장하고 종료 할 수 있습니다.
TJ Ellis

2

이제 편집기를 emacs로 변경 했으므로 모든 것이 잘 작동합니다.

그러나 이것을 설정하기 전에 "git commit -a"는 gedit를 열었지만 "빈 커밋 메시지로 인해 커밋 중단"으로 즉시 끝났습니다. gedit에서 파일을 저장해도 효과가 없습니다. "git config --global core.editor"gedit ""로 편집기를 명시 적으로 설정하면 동일한 결과가 나타납니다.

emacs에는 아무런 문제가 없지만 호기심 때문에 gedit와 함께 작동하지 않는 이유는 무엇이며 작동하도록하는 방법이 있습니까?

감사.


gedit가 이미 실행중인 경우 "gedit file.txt"를 실행하면 기존 창에서 파일이 열리고 즉시 반환됩니다. 특히 git과 함께 gedit를 사용하는 것에 대한 실제 질문으로 게시해야합니다.
araqnid

6
이것도 만났습니다. : 당신은 '독립'모드에서 실행하도록 gedit를 설정하여 문제를 해결할 수 있습니다git config --global core.editor "gedit -s"
brittohalloran

2

OS XI를 사용하는 사람들은이 명령이 잘 작동한다는 것을 알았습니다.
git config --global core.editor "open -t -W"

그러면 git이 기본 텍스트 편집기 (제 경우에는 textedit)를 열고 응용 프로그램을 종료 할 때까지 기다립니다. 커밋이 진행되기 전에 텍스트 편집을 "저장"한 다음 "종료"해야합니다. 이 페이지에 자세히 설명 된대로 사용할 수있는 몇 가지 다른 명령이 있습니다.

Apple 개발자 라이브러리-열기 명령

git config --global core.editor "open -e -W"기본 편집기가 무엇이든 관계없이 git이 항상 textedit를 열도록 할 수도 있습니다 .


1

예, 현명한 편집기 세트가 있는지 확인하십시오. 기본 편집기가 무엇인지 확실하지 않지만 나처럼 나노 (커밋을 입력 한 후 상단 근처에 표시됨) 인 경우 주석을 입력 한 다음 Ctrl-x를 눌러 완료하면됩니다. 그런 다음 y를 누르고 Enter를 눌러 커밋을 확인하십시오.

또한, 파일의 간단한 목록을보고 싶다면 미리 큰 차이 목록을 작성하는 대신 커밋 할 것입니다.

git diff --name-only

1

개정 관리를 할 때는 항상 변경 사항을 설명해야합니다. 일반적으로 "초기 커밋"과 같은 댓글이 처음있을 때입니다.

그러나 장기적으로는 각 커밋에 대해 좋은 의견을 남기고 싶습니다. 다음과 같은 형식을 원할 것입니다.

실험 기능 x를 추가했습니다.

X는 조건 Z에서 기능 Y의 성능을 향상시킵니다. X가 필요한 경우 -x 또는 --feature-eks 스위치를 사용하여 활성화합니다. 이것은 기능 요청 # 1138을 해결합니다.


1

터미널을 처음 접했을 때 "Escape and then ZZ"가 저에게 효과적 이었기 때문에 몇 달 동안이 문제가 발생했으며 해결 방법을 찾을 수 없었습니다.

간단한 조언을 해주신 TheGeoff에게 감사드립니다!


0

다음은 모든 변경 사항을 커밋하는 가장 쉬운 방법 일 것입니다.

git commit -a -m "Type your commit message here..."

물론 훨씬 더 자세한 커밋 방법이 있지만 시작해야합니다.

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