답변:
예. 커밋 메시지를 다른 파일 ( :w /some/other/path.txt)에 씁니다 . 그런 다음 저장하지 않고 편집기를 종료하십시오 ( :q!). 이전에 파일을 원래 경로에 저장 한 경우 모든 것을 삭제하고 빈 파일을 먼저 작성하십시오 (빈 커밋 메시지는 커밋을 중단합니다).
이제 "실제로"커밋 할 준비가되면 대체 경로에 저장 한 메시지 파일을 사용하십시오.
또는 커밋 메시지를 vim의 버퍼 중 하나에 복사하십시오.
그것의 가치는 것을주의 정말로에서이 작업을 수행 할 필요가 없습니다은 : commit --amend당신이 만들어졌다 후 쉬운 해결책은 당신이있어 무엇을 확약하고 밀어 전에 문제를 해결 생산하는 것입니다 그래서이 커밋 변경 할 수 있습니다. 커밋이 손상된 상태에서 커밋을 완료하고 reset HEAD~(작업 복사본이 커밋 이전에 있었던 상태로 재설정) 작업 복사본을 수정 한 다음 commit -a -c HEAD@{1}이전 커밋 메시지를 사용할 수 있습니다.
write the empty file (an empty commit message will abort the commit)부분은 매력처럼 작동했습니다, 감사합니다!
에디터가 에러 코드로 빠져 나갈 수 있다면-Git은 커밋을 중단합니다. VIM을 사용할 때 다음을 입력하십시오.
:cq
0이 아닌 오류 코드로 종료하고 커밋을 중단합니다.
commit --amend기존 커밋 메시지 및를 삭제해야하는 것처럼 a를 중단하는 좋은 방법입니다 :wq.
git commit --amend대신에 내가 할 때 내 생명을 구했습니다 git rebase --continue.
커밋 메시지를 작성하기 위해 vim을 연 경우 #으로 시작하지 않는 행을 삭제하면 git이 커밋을 중단합니다.
Aborting commit due to empty commit message.
ggdG메시지의 모든 내용을 잘라 내고 다음에 실행할 때 이전에 잘라낸 텍스트 vim만 사용할 수 있습니다 P.
네 가능합니다. 커밋하려면 편집기가 커밋 메시지를 파일에 쓰고 .git/COMMIT_EDITMSG0 상태 코드로 종료해야합니다.
따라서 VI / VIM을 사용하는 경우 다음을 수행 할 수 있습니다.
:w(기본적으로 현재 내용을에 저장합니다 .git/COMMIT_EDITMSG):cqgit commit -eF .git/COMMIT_MESSAGE는 -F /path/to/file/ 파일에서 / 경로 주어진 내용 /를 사용하여 편집기를 채 웁니다. 그러나 기본적으로 편집을-e 위해 플래그를 추가로 제공하지 않으면 커밋을 즉시 수행합니다 .
/foo/bar/프로젝트 루트와 관련 하여 디렉토리에 있음).git commit -eF ../../.git/COMMIT_MESSAGE
:w할 :sav committmp과git commit -eF committmp
@ bdonlan 답변은이 질문에 좋지만 더 나은 솔루션을 원할 수있는 상황을 지적 할 것입니다.
마지막 커밋에 변경 사항을 추가하고 싶다고 가정 해보십시오. 따라서 @bdolan이 제안한대로하십시오.
git add files
git commit --amend
새 메시지를 작성하는 동안 해당 커밋에 해당 파일을 추가하는 것을 후회한다고 상상해보십시오. 문제는 이미 저장된 커밋 메시지 가 붙어 편집기를 종료하면 (저장 여부에 관계없이) 마지막 변경 사항에 변경 사항이 추가됩니다. 이러한 동작 이전의 시점으로 되돌리려 면 마지막 커밋 을 분할 해야합니다. 피하고 싶을 것입니다.
트릭은 편집기로 줄을 시작 #하거나 줄이없는 동안 편집기를 저장하고 종료하는 것입니다. 종료하면 다음 메시지가 표시됩니다.
Aborting commit due to empty commit message.
그리고 당신은 마지막 커밋을 전혀 바꾸지 않았습니다.
git commit; vim ....; git commit --amend; git reset HEAD@{1}. 즉, 수정 사항을 "실행 취소"하려면 이전 커밋을 분할 하지 않아도됩니다. 수정하기 전에 HEAD였던 확약 오브젝트는로 저장됩니다 HEAD@{1}. 또한 zetta는 이미 비 주석 줄을 모두 삭제하도록 제안했습니다.