본문 바로가기
[개발] 형상관리/Git

Git Revert

by Devsong26 2023. 11. 9.

마스터 브랜치(혹은 메인 브랜치)에서 잘 못 푸시한 커밋을 되돌려야 하는 상황에서 사용할 수 있는 명령어로는 

revert, reset이 있습니다.

 

reset은 깃 커밋이 이력자체를 다 삭제하는 것에 반해 revert는 깃의 커밋 이력을 유지하며 롤백이력을 추가합니다.

 

git log가 아래와 같다고 가정해 봅시다.

commit 6771f9ef131e094d184999d2f2d8952ca5f8f0f7 (HEAD -> master)
Date:   Thu Nov 9 07:25:59 2023 +0900

    '2th-commit'

commit f013b11e190d2e2a766551abb2c67e07d22fd58d
Date:   Thu Nov 9 07:25:09 2023 +0900

    '1th-commit'

 

2th-commit을 revert하는 명령어는 다음과 같습니다.

git revert {커밋의해시값}

ex) git revert 6771f9ef131e094d184999d2f2d8952ca5f8f0f7

 

그러면 아래와 같은 화면이 보여지는데 내용을 수정하시고 ':wq' 입력하시면 됩니다.

 

 

만약 여러개의 커밋을 되돌려야 하는 상황이라면 가장 마지막 커밋부터 하나씩 revert 하는 것을 추천합니다.

이전 커밋을 먼저 revert했을 때, 충돌이 발생할 위험이 있습니다.

 

 

병합된 커밋을 되돌리려면 어떻게 해야 할까요?

--mainline 옵션을 통해 되돌아갈 브랜치를 정하여 revert 하시면 됩니다.

--mainline 1은 현재 브랜치, 2는 다른 브랜치를 의미합니다.

commit 60d0b71f28c0c15c1d41c9ffb3d209083c246bdb (HEAD -> master, branch1)
Date:   Thu Nov 9 07:37:00 2023 +0900

    'branch1-1th'

commit 051d59bab3147e5bc5080c9a832f0047ea4a0fa8
Date:   Thu Nov 9 07:27:46 2023 +0900

    Revert "'2th-commit'"

    This reverts commit 6771f9ef131e094d184999d2f2d8952ca5f8f0f7.

 

branch1-1th 커밋을 되돌려 2th-commit을 최신상태로 만드려고 합니다.

아래와 같이 입력하면 해결됩니다.

git revert --mainline 1 60d0b71f28c0c15c1d41c9ffb3d209083c246bdb
commit bceb235ab1de6f602cef4650d6f066ec7cc43531 (HEAD -> master)
Date:   Thu Nov 9 07:45:36 2023 +0900

    Revert "'branch1-1th'"

    This reverts commit 60d0b71f28c0c15c1d41c9ffb3d209083c246bdb.

commit 60d0b71f28c0c15c1d41c9ffb3d209083c246bdb (branch1)
Date:   Thu Nov 9 07:37:00 2023 +0900

    'branch1-1th'

commit 051d59bab3147e5bc5080c9a832f0047ea4a0fa8
Date:   Thu Nov 9 07:27:46 2023 +0900

    Revert "'2th-commit'"

    This reverts commit 6771f9ef131e094d184999d2f2d8952ca5f8f0f7.