git revert 현재 커밋 취소하고 이전 커밋으로 되돌아가기
현재 커밋 취소하고 이전 커밋으로 되돌아가면서 커밋 이력은 유지하기
git revert
명령어 설명
최근 커밋부터 차례로 이전 커밋을 취소하는 명령어. 리셋과 유사하지만, 기존 커밋을 삭제하지 않고 (커밋 이력을 남겨둠) “커밋 취소” 를 의미하는 새로운 커밋을 생성한다. 작업 폴더가 깨끗한 상태여야 수행이 가능하다.
한 번에 한 커밋만 취소하므로, 충돌이 발생하지 않으려면 최신 커밋부터 순차적으로 여러 번 취소를 해야한다. 만약 충돌이 발생하면 아래와 같은 순서로 해결해야 한다.
(1) 충돌된 파일을 찾아서 수정
(2) 수정한 파일을 인덱스(스테이지 영역)에 등록
(3) git revert --continue 로 명령을 계속 진행시킨다.
기본 사용법
1
2
3
4
5
6
7
8
# revert
git revert <commit> [--edit or --no-edit]
# revert 연속 적용
# 충돌로 중지된 revert 를 재개
git revert --continue
옵션
| 옵션 | full name | 설명 |
|---|---|---|
<commit ID> |
지정한 커밋을 취소하고, 그 이전 커밋의 내용으로 작업 디렉터리와 스테이지 영역, 깃 저장소를 모두 변경함. 새로운 커밋이 생성된다. |
|
<commit1> <commit2> .. |
취소가 가능한 순차적 커밋을 명시해 연속해 리버트를 적용한다. 명시한 인자 중 순차적 취소가 불가능한 게 있으면 충돌이 발생 |
|
HEAD |
현재 헤드가 가리키는 커밋을 취소하고 이전 커밋의 상태로 되돌아가고 새로 커밋. 연속으로 사용 가능 |
|
<commit ID> --edit |
커밋 메시지를 편집하도록 편집기가 실행된다. | |
<commit ID> --no-edit |
편집기가 열리지 않고, 커밋 메시지를 Revert + 주어진 메시지로 등록한다. | |
--no-commit |
이전 커밋으로 되돌아간 뒤 커밋은 진행하지 않고 대기 즉, 작업 디렉터리와 스테이지 영역에만 취소를 위한 변경 사항만을 적용한다. 이후 git revert --continue를 실행해 재개할 수 있다. |
|
--continue |
두 가지 기능이 있다. (1) 충돌로 인해 일시 중지된 revert 를 재개한다. (2) --no-commit 옵션으로 실행된 revert 명령어를 재개한다. |
Reference
// reading compass
이 글과 이어지는 경로
시리즈, 카테고리, 태그 겹침, 최신도를 점수화해 가까운 글일수록 중심에 배치합니다.
댓글 남기기