DevTools/Git

[Git] Tip: Revert Merged Commit

llHoYall 2021. 3. 5. 22:04

우리는 때로 되돌렸다는 기록을 남기면서 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로 유지됩니다.

 

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