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

UNIX시스템 - 김희천,김진욱 저