[깃(Git)] 6. 이전 커밋 변경사항 되돌리기 위한 리버트(revert)

  • 이전 커밋의 변경사항을 되돌려야 하는 상황은 꽤 많이 발생한다.
  • 에러를 발생시키는 커밋이 있다면, 빠르게 해당 커밋의 변경사항을 되돌려야 한다.

git revert {커밋 ID}

  • 다음과 같은 세 개의 커밋이 있는 상황이라고 가정한다.
1
2
3
4
5
6
$ git log --oneline
'''
c28d380 b 파일 추가
0c0ce19 a 파일 수정
3592e46 a 파일 추가
'''
  • 이때 0c0ce19 (a 파일 수정) 커밋이 문제가 있다는 걸 알게 됐다.
  • 0c0ce19 커밋 내용은 이미 remote repository 공간에 올라갔다.
  • 중간에 있는 커밋의 변경사항만 되돌리기 위해선 git reset은 부족해 보인다.
  • 이럴 때 사용하는 명령어가 git revert이다.
  • 기존 커밋들을 지우지 않고, 현재 커밋 위로 이전 커밋 내용을 다시 되돌리는 커밋을 만든다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ git revert 0c0ce19
'''
Revert "a 파일 수정"

This reverts commit 0c0ce19e1eebf3901439e081ea1f290020de3cb4.

# Please enter the commit message for your changes. Lines starting
# with "#" will be ignored, and an empty message aborts the commit.
#
# On branch main
# Your branch is up to date with "origin/main".
#
# Changes to be committed:
#       modified:   a
'''
  • 이제 로그를 확인하면 다음처럼 0c0ce19 시점 때의 작업물로 되돌아온 것을 확인할 수 있다.
1
2
3
4
5
6
7
$ git log --oneline
'''
455f883 (HEAD -> main) Revert "a 파일 수정"
c28d380 (origin/main, origin/HEAD) b 파일 추가
0c0ce19 a 파일 수정
3592e46 a 파일 추가
'''
  • 이전 커밋을 되돌려야 하는 상황일 때, rebase --interactive를 사용하여 커밋 내역을 조작할 수 있다.
0%