VI가 커밋 메시지를 기다리는 화면에있을 때 Git 커밋을 어떻게 중지합니까?


203

나는 Git에게 git bash 내에서 커밋을 수행하도록 요청했다. 항상 그렇듯이 VI를 불러왔다.

커밋을 취소하고 싶습니다.이 시점부터 커밋이 진행되지 않도록하려면 어떻게해야합니까?


:q!vim을 종료 하기 위해 들어가기 전에 Esc를 눌러야한다는 점을 추가 할 가치가 있습니다 .
M_Merciless

답변:


331

두 가지 옵션이 있습니다.

  • 빈 커밋 메시지를 제공하십시오. 새로운 커밋이고 아직 메시지를 저장하지 않은 경우 간단히 :q!저장하지 않고 사용할 수 있습니다 . 이미 저장했거나 이전 커밋을 수정 중이라면 전체 로그 메시지를 삭제하고 다시 저장하십시오. 이것은 Vim에서 ggdG+ :wq로 할 수 있습니다 .

  • 0이 아닌 종료 코드로 편집기를 종료하십시오. Vim에서는 :cq(오류 코드로 종료)를 사용할 수 있습니다 .

작업 복사본을 커밋하기 전의 상태로 항상 다시 설정할 수 있다는 점은 주목할 가치가 있습니다 git reset HEAD^.


95
: cq는 사업입니다. 어떤 이유로 git은 : q!
Sirex

2
git reset HEAD ^는 로컬 수정을 버릴 것입니다.
juanmf

2
:큐! 미리 정의 된 메시지가 이미 있기 때문에 작동하지 않을 수 있습니다. 편집 중입니다.
Papipo

딸꾹질 : git reset HEAD^더 많은 것을 요구 하면 , 쉘은 ^를 줄 연속으로 해석 할 수 있습니다. 시도 git reset "HEAD^", git reset HEAD^^또는 git reset HEAD~1대신 대답 당 : stackoverflow.com/questions/14203952/git-reset-asks-more
제이크 스티븐스 - 하스

75
  • :q!커밋을 수정하면 작동하지 않습니다. 커밋 메시지를 업데이트하지는 않지만 수정을 실행합니다.
  • :cq 수정안을 완전히 중단합니다.

1
다른 +1을 추가 할 수 있으면 좋겠습니다. 나는 내 수정안이 잘못된 커밋을 선택할 때 여러 시간을 보냈습니다.
Wyrmwood

8

요약하면 :

  • 만들 때 새로운 커밋 (즉 git commit)를 사용하여 종료합니다 :q!.
  • 수정시 (예 :) v를 누르고 화살표 키를 사용하여 git commit --amend커밋 메시지 ( #로 시작 하지 않는 처음 몇 행만 )를 제거한 다음 삭제를 누릅니다. 변경 사항을 적용하려면 종료하십시오:wq ! 사용 :q!하면 변경 사항이 손실되고 이전 커밋 메시지가 사용됩니다.

VIM을 사용할 때 두 경우 모두 종료 :cq해도됩니다. VIM은 오류 코드와 함께 종료되고 커밋이 중단됩니다.

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