[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를 사용

Categories:

Updated:

Leave a comment