[Git] checkout, reset, revert, restore
checkout: 브랜치/커밋 이동
reset: 브랜치 히스토리 수정
revert: 히스토리를 유지한 채 커밋 취소
restore: 파일의 변경 되돌리기
checkout, reset, revert 비교
| 구분 | git checkout 커밋ID |
git reset 커밋ID |
git revert 커밋ID |
|---|---|---|---|
| HEAD | 특정 브랜치 또는 커밋을 가리킴 | 현재 브랜치가 다른 커밋을 가리키도록 이동 | HEAD 유지 |
| 히스토리 | 변경하지 않음 | 브랜치 히스토리를 변경함 | 기존 히스토리를 유지 |
| 커밋 | 새 커밋 생성 X | 새 커밋 생성 X | 취소 내용을 담은 새 커밋 생성 |
| 용도 | 과거 커밋 확인, 브랜치 이동, 실험 | 커밋 되돌리기 (soft/mixed/hard 옵션) | 이미 공유된 커밋 안전하게 취소 |
| 주의점 | Detached HEAD 상태 가능 | 협업 브랜치에서 사용 주의 | 상대적으로 안전 |
restore
- 특정 파일의 변경사항을 되돌리는 명령어
- 커밋 히스토리에는 영향을 주지 않음
git restore 파일명- 작업 디렉토리에서 수정한 내용을 마지막 커밋 상태로 되돌림
- 커밋되지 않은 변경 사항 삭제
git restore --staged 파일명- 스테이징 영역에 추가했던 파일의 스테이징을 취소
- 작업 디렉토리에만 남음
git restore 커밋ID 파일명- 특정 커밋의 상태로 파일 복원
- 특정 시점의 파일 버전을 가져올 때 사용
commit 단위의 되돌리기는 reset/revert
파일 단위의 되돌리기는 restore를 사용
Leave a comment