[Small-Tip] Git Reset과 Revert의 차이점

Mubby·2022년 2월 24일
0

소소팁(9xx)

목록 보기
1/5
post-thumbnail

조그마한 문제가 생겼다. 사내 개발자님의 Git Push 이후 서비스에 문제가 생긴 것!

문제 발견의 순간, 당 개발자님이 잠시 자리를 비웠다. 큰 큐모의 수정 아니었던지라 Push 이전으로 되돌리려 한다.

나는 단순히 ‘Reset 시키면 되겠네’ 라고 생각했지만, 협업 시에는 Push 해버렸다면 ‘Revert’ 명령어를 사용해야 된다고 한다. (나한테 맡겼으면 큰일날 뻔 했다.. 직전에 날 말려주는 사람이 있었겠지..?)


Git Reset

Reset 명령어 사용 시, 해당 시점까지의 일들이 아예 존재하지 않았던 것처럼 되돌릴 수 있다.
존재하던 모든 이력이 사라지며 Reset 시행 또한 이력에 남지 않는다.

따라서 Reset 명령어를 사용하면 히스토리를 깔끔하게 유지할 수 있으며, 편하게 코드를 되돌릴 수 있다.

Git Revert

Revert 명령어 사용 시, Revert를 시행하겠다는 이력을 남기고 원하는 시점으로 되돌린다. 이전 History를 모두 남겨두고 새로운 commit을 생성하면서 해당 시점으로 되돌아 가는 것이다.

Revert를 사용하면 어떠한 이유로 명령어를 사용했는지 기록을 남길 수 있다는 장점이 있다.


둘의 공통점은 코드를 ‘과거 시점으로 되돌린다’는 것이지만,

가장 큰 차이점은 ‘기존 이력이 사라지는가 vs 남아있는가’ 이다.

혼자 사용하는 브랜치인 경우 Reset 명령어를 사용하면 편하고 깔끔하게 코드를 되돌릴 수 있지만, 여러 사람이 협업하는 브랜치에서 Reset 명령어를 사용한다면 코드를 공유하고 있던 개발자들의 커밋이 뒤엉켜 끔찍한 상황에 직면할 수 있음을 명심하고, 특정 상황을 제외하고는 꼭 Revert 명령어를 사용하도록 하자.


두 명령어의 차이점을 아주 잘 설명해준 참고 만화 입니다.
개발바보들 1화 - Back to the Future

0개의 댓글