학습 사이트에서 다음 레벨에 해당하는 내용이다.
level rampup4
git reset
git reset [옵션] <커밋 해시/상대 참조>
git reset --soft
: 커밋을 되돌리지만, 스테이징 영역과 작업 디렉토리는 그대로 둠git reset --mixed
: (기본옵션) 커밋을 되돌리고, 스트에지이 영역에서 변경 사항을 제거하지만 작업 디렉토리는 유지함git reset --hard
: 커밋을 되돌리고, 스테이징 영역과 작업 디렉토리의 변경 사항을 모두 제거함 (해당 커밋 이후의 모든 변경 사항)git reset --hard HEAD~1
// HEAD를 바로 이전 커밋(HEAD~1)으로 되돌리고, 해당 커밋 이후의 모든 변경 사항을 삭제함
reset
으로 되돌리면 커밋 기록이 덮어써지니 주의해야함--hard
옵션은 되돌릴 수 없기에 매우 신중해야함git revert
git reset <커밋 해시/상대 참조>
revert
는 새로운 커밋을 만들어서, 특정 커밋의 변경 사항을 역으로 적용한다.git revert <commit hash>
// <commit hash>에 해당하는 커밋을 되돌리는 새 커밋을 만듦
git revert HEAD~2..HEAD
// 최근 2개의 커밋을 되돌림 (HEAD~2부터 HEAD까지)
기능 | git reset | git revert |
---|---|---|
목적 | 커밋 히스토리를 되돌리거나 수정함 | 커밋을 취소하는 새 커밋을 만듦 |
커밋 기록 | 과거 커밋으로 되돌리며 기록을 변경 | 커밋 히스토리를 유지하며 취소 커밋을 추가 |
위험성 | 히스토리를 변경함 (공유된 브랜치에서 문제 발생 가능) | 히스토리를 안전하게 유지 |
용도 | 로컬 브랜치 수정 시 주로 사용 | 공유된 브랜치에서 커밋 취소 시 사용 |
파일 변경 | 옵션에 따라 스테이징/작업 디렉토리 상태도 변경됨 | 파일 상태는 그대로, 커밋만 취소 |