Git 커밋을 되돌리는 방법들

업데이트:

Git 커밋 되돌리기

revert

revert는 특정 커밋만 되돌려서 다시 작업 후 커밋하는 방식이다.

즉, 커밋 내역이 지워지지는 않고 이전 커밋내용을 불러와서 새로운 커밋으로 반영하는 것이다.

사용은 다음과 같다.

git revert [되돌리고 싶은 커밋 이름]

image


위 이미지와 같이 신규 커밋이 생성되는 것을 알 수 있다.


reset

reset 명령어는 옵션이 3가지가 있다.

기본값은 --mixed 로 실행된다.

간단하게 살펴보면 다음과 같다.

공통적으로 HEAD는 변경될 커밋을 가리킨다.
--soft : Staging Area와 Working Directory는 기존의 커밋의 상태로 유지된다.
--mixed: Working Directory만 기존의 커밋의 상태로 유지된다.
--hard: 유지되는것 없이 모든게 변경될 커밋 기준으로 변경된다.


이제 자세히 살펴보자.

–soft

–soft 옵션은 모든 변경사항이 그대로 남고 Head만 변경된다.

git reset --soft HEAD~1

image


–mixex

–mixed 옵션은 작업 디록토리가 남고, 스테이징 상태와 Head가 변경된다.

git reset --mixex HEAD~1

image


–hard

–hard 옵션은 남는것 없이 모든게 변견된다.

git reset --hard HEAD~1

image


revert vs rebase

그럼 어떨때 revert를 쓰고 어떨때 rebase를 쓸까?

커밋을 수정하느냐, 새로 만드느냐의 차이다.

협업 관점에서 보자면,

로컬에서의 커밋만을 변경할 경우, reset를 사용하는게 좋다.

반대로 원격 저장소의 커밋 변경을 할 경우, revert를 하여 이력을 확실히 남기는쪽으로 관리하는게 좋다.


  • 참고자료: https://www.freecodecamp.org/news/content/images/2021/08/image-117.png

태그:

카테고리:

업데이트:

댓글남기기