728x90
목차
- reset
- 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 |