나는 커밋 중간에 있습니다. vim에서 커밋 메시지를 입력했습니다. 나는 지금 내가 뭔가를 바꿀 필요가 있음을 기억했다. 내가 원하는 것을 달성하기위한 다른 옵션이 있다는 것을 알고 있지만 커밋을 중단하는 방법이 있는지 알기를 원하지만 지금까지 입력 한 커밋 메시지는 저장하십시오.git : 타이핑 중 메시지가 취소됩니다.
답변
예. 커밋 메시지를 다른 파일()에 씁니다. 그런 다음 저장하지 않고 편집기를 종료하십시오 (:q!
). 이전에 파일을 원래 경로에 저장 한 경우, 모든 것을 삭제하고 빈 파일을 먼저 작성하십시오. 빈 커밋 메시지는 커밋을 중단합니다. 이제
, 당신이 "진짜야"커밋 할 준비가, 당신은 대체 경로에 저장된 메시지 파일을 사용합니다.
또는 커밋 메시지를 vim의 버퍼 중 하나로 복사하십시오.
그것은 당신이 정말 모든에서이 작업을 수행 할 필요가 없습니다 주목할 필요가있다 : 당신이 만들어졌다 후 쉬운 솔루션이 해결 다음있어 무엇을 확약하고 생산하는 것입니다 그래서이 커밋 변경 할 수 있습니다 commit --amend
그것을 밀기 전에. 깨진 상태 인 커밋을 완료 할 수도 있습니다. reset HEAD~
(커밋 전에 작업 복사본이 있던 상태로 리셋합니다), 작업 복사본을 수정 한 다음 commit -a -c [email protected]{1}
은 이전 커밋 메시지를 사용합니다.
커밋을 중단 할 수 있지만 다른 방법은 으로 수정 후을 수정하는 것입니다. 현재 작업을 커밋 한 다음 원하는 추가 변경 사항 (git add
)을 작성한 다음 git commit --amend
을 실행하십시오. 커밋 메시지 편집기로 되돌아 가게되며 저장하면 추가 변경 사항과 새 커밋 메시지가 포함되도록 커밋이 수정됩니다.
당신이 정력이 그냥 중단됩니다 #와 자식로 시작하지 않는 행을 삭제 커밋 메시지를 작성하는 열 경우 편집기가 오류 코드로 종료 할 수 있습니다 경우
Aborting commit due to empty commit message.
이것은 git commit - amend를 중단하고 싶을 때 특히 유용합니다. – edsko
이것은 나노 편집기 –
에서 작동하지 않습니다. commit하지만 커밋 메시지를 저장한다 # 효과적으로 시작하지 않는 라인을 삭제하면 커밋 메시지를 지우지 만 커밋 메시지를 저장하지는 않는다. 이것은 매우 많은 upvotes가있는 지 잘 모르겠다 . –
를 저지 - - 힘내는 커밋을 중단합니다. VIM을 사용할 때 0이 아닌 오류 코드로 종료하고 커밋을 중단하려면
:cq
을 입력하십시오.
이것은 커밋 메시지를 중단시키기위한 좋은 트릭이다. 만약 당신이 기존의 커밋 메시지와': wq'를 삭제해야만했기 때문에 "amend"라고 말하면됩니다. –
좋은 속임수! 그러나 커밋 메시지를 저장하는 방법은 삭제하지 않는 것이 좋습니다 –
그래서 svn이 어떻게 처리합니까? 출구 코드 외에 봐요? –
@bdonlan 대답은 바로이 질문에 대한 좋은하지만 난 당신이 더 나은 솔루션을 할 수 있습니다 상황을 지적합니다.
마지막 커밋에 변경 사항을 추가한다고 가정 해보십시오. @bdolan 제안 그래서 당신이 할 :
git add files
git commit --amend
, 당신은 그 커밋에 해당 파일을 추가 후회 새로운 메시지를 작성하는 동안 것을 상상해보십시오. 문제는이 이미 커밋에게 마지막에 변경 사항을 추가합니다 메시지를 커밋 (또는 저장하지 않고) 편집기를 종료 저장된 함께 붙어있다. 이 작업을 수행하기 전의 지점으로 되돌아 가서 split the last commit이 필요합니다. 피하고 싶을 것입니다.
트릭은 저장하고 전혀에만 #
로 시작하는 라인 또는 전혀 라인을 가지고있는 동안 편집기를 종료하는 것입니다.퇴장하면 다음 메시지로 인사드립니다 :
Aborting commit due to empty commit message.
그리고 마지막 커밋을 전혀 변경하지 않았습니다.
내가 이해한다면 다시 말하면 문제가된다. 그렇다면 틀린 말이다. 여기에 설명 된 것처럼 :'git commit; vim ....; git commit --amend; git reset HEAD @ {1}'. 즉, 개정안을 "취소"하려면 이전 커밋을 분할하지 않아도됩니다. 개정 전에 HEAD였던 커밋 객체는'HEAD @ {1}'로 저장됩니다. 또한 zetta는 이미 비 주석 행을 모두 삭제할 것을 제안했습니다. –
예 가능합니다. 커밋을하려면 편집자가 파일 .git/COMMIT_EDITMSG
에 커밋 메시지를 작성하고 상태 코드 0으로 종료해야합니다. 당신이 VI/VIM을 사용하는 경우
그래서, 당신은 ... 다음을 수행
- 을 커밋 메시지를 작성 할 수 있습니다.
- 당신이해야 할 일을 ...
:w
와 커밋 메시지를 오류:cq
- 와
- 편집기를 종료 (기본적으로이
.git/COMMIT_EDITMSG
현재 내용을 저장합니다) 저장 ... 심지어 추가/제거 파일을 준비 영역으로 가져옵니다. - 는// 파일에서/경로 주어진 내용으로 편집기를 채 웁니다
git commit -eF .git/COMMIT_MESSAGE
-F /path/to/file
으로 기존의 커밋 메시지 편집을 계속합니다. 그러나 에을 추가로 추가하지 않는 한 기본적으로이 명령은 즉시 커밋을 수행합니다.
이 작동하지만 덜 바람직합니다. 1) CWD가 .git 폴더 인 것으로 가정하기 때문에 2) [git worktrees] (https://git-scm.com/docs/git-worktree)를 사용하고, git worktrees를 사용하면 실제로 .git은 실제 .git 폴더가있는 곳의 _file_입니다. –
@AlexanderBird 이것이 사실이 아닙니다 ... 5 단계에서 이전 커밋 메시지를 가져 오려면 상대 경로를 지정해야합니다. (예를 들어'/ foo/bar /'디렉토리에 있다고 가정하십시오. , 프로젝트 루트로부터의 상대 경로)'git commit -eF ../../. git/COMMIT_MESSAGE'와 비슷합니다. –
@AlexanderBird는 멋지지만, git에 여러개의 작업 트리가 있다는 것을 눈치 채지 못했습니다. 힌트를위한 Thx! 나는 이것에 대한 유일한 단점은 당신이 실제적인 코드에 집중할 수 없도록 머리 속에 전반적인 개요를 유지해야한다는 것이다. 그리고 그냥 "어디에서 그만 뒀는지"에 대한 커밋 메시지를 가져 오는 것이 조금 무거울뿐입니다. :) –
- 1. Git Revert 오류 메시지가 표시됩니까?
- 2. modalViewController를 호출하면 호출이 취소됩니다.
- 3. 다른 사용자에게 "사용자가 타이핑 중 ..."을 표시하는 방법은 무엇입니까?
- 4. "디버거 대기 중"메시지가 표시됩니까?
- 5. 함수를 호출하면 이전 작업이 취소됩니다.
- 6. git merge 사용 중 문제가 발생했습니다.
- 7. WPF 빠른 프로토 타이핑.
- 8. Git 리모콘을 추가하는 중 ... 나는 제대로하고 있습니까?
- 9. git commit 후에 "rewrite ... (90 %)"메시지가 의미하는 것은 무엇입니까?
- 10. jQuery 마우스를 올리면 화면 이동 간격이 취소됩니다.
- 11. AVD 시작 프로세스 중 오류 메시지가 발생했습니다.
- 12. 게시판 포럼 : 사용 중 오류 메시지가 발생했습니다.
- 13. Access에서 양식을 여는 중 오류 메시지가 발생했습니다.
- 14. Excel 파일을 여는 중 메시지가 나타나면
- 15. 목록보기를 생성하는 중 오류 메시지가 발생했습니다.
- 16. java를 실행하는 중 오류 메시지가 발생했습니다.
- 17. Visual Studio 2008에서 터치 타이핑
- 18. 오리 타이핑 (자바) 인터페이스 개념
- 19. 타이핑 드롭 다운리스트
- 20. 오리 타이핑이없는 동적 타이핑?
- 21. SQLite3의 동적 타이핑
- 22. 프로토 타이핑 "인수"
- 23. 자기 참조 형 타이핑
- 24. jquery 타이핑 효과
- 25. ColdFusion에서의 Duck 타이핑
- 26. Numeric.AD 및 타이핑 문제
- 27. 동적 타이핑 언어로 문서화
- 28. SML의 프로토 타이핑 기능
- 29. 오리 타이핑 사용 방법
- 30. 아마존 EC2 프로토 타이핑
참고 : ": q!"를 사용하여 vim을 종료하십시오. autopopulated 병합 충돌 메시지가있는 경우 커밋을 중단하지 않습니다. 대신 커밋이 계속되고 메시지에 충돌이 발생한 파일이 나열되지 않습니다. – stephenbez
작동하지 않았습니다 ... :(여전히 커밋을 완료했습니다.) – phyatt