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 명령어를 재개한다. |