Git

GitHub | git commit 이전 상태로 되돌리기, git commit rollback 하기

토오오끼 2024. 4. 8. 22:36
728x90
반응형

 

git으로 코드를 관리하면서 가장 좋은 점은 이전에 했던 커밋을 되돌려서 이전 상태로 복구할 수 있다는 것이다.

분명 어제 이렇게 해주세요~ 해서 수정해서 push 했더니 다음주에 이전 버전으로 다시 원상복구 해주세요~ 하는 게 하루이틀이 아닌... git으로 코드 관리를 하길 정말 잘했다는 생각이 드는 요즘이다...🥹

 

원격 저장소에 push가 된 게 아니라면 git reset 이라는 명령어로 로컬에서 쉽게 커밋 이전의 상태로 되돌릴 수 있다. 하지만 원격 저장소에 push가 되었다면 과정이 조금 복잡해 진다.

 

1. 로컬에서 커밋 이전 상태로 되돌린 후 강제로 push하기

먼저 git log로 commit log를 확인한다.

git log

몇번째 커밋 전 상태까지 되돌리고 싶은지 확인을 했다면 git reset 명령어로 로컬에서 먼저 되돌려준다.

git reset --hard HEAD~1

이후 되돌려진 로컬을 원격 저장소에 강제로 push 해 준다.

git push -f origin master

-f 또는 --force 명령어를 추가하여 강제로 push 해 주면 된다.

-> 이렇게 하면 해당 원격 레포를 팀원 누군가 쓰고 있었다면 그 팀원이 push를 할 때 원격 저장소의 버전이 맞지 않기 때문에 충돌이 일어난다. 함께 쓰는 레포라면 팀원에게 확인을 꼭 해야 한다. (제발~)

 

2. 원격 레포에 히스토리 기록을 남기면서 되돌리기

git revert 명령어를 사용하면 revert 시킨 히스토리마저 원격 레포에 기록이 되기 때문에 함께 쓰는 레포라면 revert 명령어를 쓰는 것이 더 좋다.

똑같이 git log로 commit의 hash를 먼저 확인한 후 (git log를 입력했을 때 commit 옆에 뜨는 긴 문자열이 hash이다),

git revert "되돌릴 commit hash"를 입력 해 주면 된다.

git revert "되돌리고자 하는 commit hash"

이후 다시 commit, push를 해 주면 원격 레포에 revert 한 기록이 남으면서 revert 한 commit 시점으로 되돌아가게 된다.

git commit -m "revert commit hash"

git push origin master

원격 레포에 남은 revert history

 

728x90
반응형