[Git] reset & revert

cheon2308
|2022. 10. 28. 10:46
728x90

 

목차

  1. reset
  2. revert

 


1. Git reset

쓰는 상황이 오지 않기를 빌면서..

 

개요
  • 시계를 마치 과거로 돌리는 듯한 행위로, 프로젝트를 특정 커밋(버전) 상태로 되돌림
  • 특정 커밋으로 되돌아 갔을 때, 해당 커밋 이후로 쌓았던 커밋들은 전부 사라짐
  • git reset [옵션] {커밋 ID}
    • 옵션은 soft, mixed, hard 중 하나를 작성
    • 커밋 ID는 되돌아가고 싶은 시점의 커밋 ID를 작성

 

git reset의 세 가지 옵션

 

  • --soft
    • 해당 커밋으로 되돌아가고
    • 되돌아간 커밋 이후의 파일들은 Staging Area로 돌려놓음
  • --mixed
    • 해당 커밋으로 되돌아가고
    • 되돌아간 커밋 이후의 파일들은 Working Directory로 돌려놓음
    • git reset 옵션의 기본값
  • --hard
    • 해당 커밋으로 되돌아가고
    • 되돌아간 커밋 이후의 파일들은 모두 Working Directory에서 삭제 => 따라서 사용 시 주의할 것!
    • 기존의 Untracked 파일은 사라지지 않고 Untracked로 남아있음

 

 

※ git reflog

 

  • git reset의 hard 옵션은 Working Directory 내용까지 삭제하므로 위험할 수 있음
  • git reflog 명령어를 이용하면 reset 하기 전의 과거 커밋 내역을 모두 조회 가능

 

  • 이후 해당 커밋으로 reset 하면 hard 옵션으로 삭제된 파일도 복구 가능

 


2. git revert

 

개요

 

  • 과거를 없었던 일로 만드는 행위로, 이전 커밋을 취소한다는 새로운 커밋을 생성함
  • git revert {커밋 ID}
  • 커밋 ID는 취소하고 싶은 커밋 ID를 작성

 

git reset과의 차이점

 

  • 개념적 차이
    • reset커밋 내역을 삭제하는 반면, revert새로운 커밋을 생성
    • revert는 Github를 이용해 협업할 때, 커밋 내역의 차이로 인한 충돌 방지 가능
  • 문법적 차이
    • git reset 5sd2f42라고 작성하면 5sd2f42라는 커밋으로 되돌린다는 뜻
    • git revert 5sd2f42라고 작성하면 5sd2f42라는 커밋 한 개를 취소한다는 뜻
    • (5sd2f42라는 커밋이 취소되었다는 내용의 새로운 커밋을 생성함)
728x90

'Tool > Git' 카테고리의 다른 글

[Git] workflow  (0) 2022.10.28
[Git] branch & merge  (0) 2022.10.28
[Git] Undoing(되돌리기)  (0) 2022.10.28
[Git] 기본 설정 및 조작  (0) 2022.10.28
[Git] 설치 및 기본 설정  (0) 2022.10.28