Git reset, revert 차이

wannabeking·2022년 5월 22일
0

Git

목록 보기
2/3
post-thumbnail

reset & revert

어느날 한 개발자는 git을 사용하다 작성한 코드를 날려먹고 공부를 결심한다! 내 얘기 아님.

개발을 하다보면 정신 못차리고 이상하게 코드를 작성할 때가 있다.
또한 정신 못차리고 작성한 코드를 커밋 날릴 수도 있다.
그 커밋을 되돌려야 할 때도 있을 것이다.

그럴 때 사용하는 것이 resetrevert!



reset

특정 커밋으로 되돌아가면서 해당 커밋 이후의 커밋들은 모두 삭제된다.
즉, 과거의 이력이 커밋에 안남고 깔끔히 돌아간다.

reset 후 원격 저장소에 push 하면 에러(삭제했기 때문에 커밋 히스토리 달라서) -> --force 사용

다음 3가지의 option을 사용할 수 있다.

  • --soft : index 보존(add한 상태, staged 상태), 워킹 디렉터리의 파일 보존. 즉 모두 보존. (commit 하기 전 상태)
  • --mixed : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 보존 (기본 옵션, add 하기 전 상태)
  • --hard : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 삭제. 즉 모두 취소. (Untracked 파일은 남음)

사용 방법

git reset --options c1

c1 -> c2 -> c3 -> c4 커밋 존재하고 c1 상태로 가고 싶으면 위와 같이 사용한다.
옵션은 --mixed 사용한 뒤 살릴거 살리고 날릴거 날리는게 마음 편할 것 같다.



revert

특정 커밋을 삭제하진 않고 없던일로 만드는 새로운 커밋이 생성된다.
즉, revert 한 이력이 커밋에 남게 된다.
과거 커밋 삭제 없이 새로운 커밋을 만들기 때문에 커밋 히스토리 같아서 원격 저장소에 push해도 충돌 X


사용 방법

git revert c4
git revert c3
git revert c2

c1 -> c2 -> c3 -> c4 커밋 존재하고 c1 상태로 가고 싶으면 위와 같이 사용한다.
역순으로 하나 씩 revert 수행하는 것임.



정리

되돌아간 이력이 남는 revert는 협업 시 권장 된다.
솔플 시에는 reset 사용해도 된다. 깔끔하게 날아가서 기분 좋다.

profile
내일은 개발왕 😎

0개의 댓글