본문 바로가기
DevTools/Git

[Git] Tip: Revert Merged Commit

by llHoYall 2021. 3. 5.

우리는 때로 되돌렸다는 기록을 남기면서 commit을 되돌려야할 때가 있습니다.

이럴 때, revert 명령을 사용하게 되죠.

하지만, 되돌릴 커밋이 merged commit일 때가 문제죠.

2개의 commit이 병합되어있을 경우, 되돌릴 때 어떤 commit으로 되돌려야할 지가 문제죠.

이제 이 문제를 하나씩 살펴봅시다.

Merged
   | \
  C  B
   | /
   A

 

위와 같은 상태에서 merged commit을 revert해 봅시다.

$ git revert <Merged>

이런 식으로 명령을 내리면 git이 명령 수행을 할 수 없다고 불평을 합니다.

당연한 일이죠.

되돌렸을 때, C로도 갈 수 있고, B로도 갈 수 있기 때문입니다.

 

이럴 때, -m 옵션을 사용할 수 있습니다.

쉽게 말해 revert 후, 어느 쪽을 따라 갈까? 라는 걸 알려주는 거죠.

2개의 commit이 merge 되기 때문에 1 혹은 2를 인자로 넣어줄 수 있어요.

 

$ git revert -m1 <Merged>
  AC
   |
Merged
   | \
  C  B
   | /
   A

1을 주면 master branch를 따라 가게 됩니다.

즉, B가 revert되고 A와 C가 남습니다.

 

그럼 2를 주면?

$ git revert -m2 <Merged>
  AB
   |
Merged
   | \
  C  B
   | /
   A

topic branch를 따라 가게 됩니다.

즉, C가 revert되고 A와 B가 남습니다.

하지만, 현재의 branch는 master로 유지됩니다.

 

핵심만 쉽게 설명 드렸는데, 잘 이해되셨으면 좋겠네요. ^^

댓글