git log --pretty=oneline 에서 보면 상단에 HEAD라고 표시 되어있는 것을 볼 수가 있는데
여기서 HEAD 는어떤 커밋 하나를 가리키고 있는 존재인데, 보통 가장 최근에 한 커밋을 가리키고 있다.
우리가 커밋을 할 때마다 새로운 커밋이 생기고 HEAD는 매번 더 새로운 커밋을 가리키게 된다.
"아하 HEAD는 최근 커밋을 가리키는구나? 근데 그게 뭐?" 라고 할 수있다
이런 HEAD가 왜 필요할까?
지금 작업중인 워킹 디렉토리의 내부는 HEAD가 가리키는 커밋에 따라 다르게 구성된다.
워킹 디렉토리 내부를 살펴보자면
최근까지 작업한 내용이 잘 들어있다.
그 뜻은 HEAD가 가장 최근에 한 커밋을 가리키고 있다는 것인데, 만약 HEAD가 다른 커밋을 가리키면
워킹 디렉토리 안에 있는 것들은 언제든지 다르게 바뀔 수 있다.
만약 HEAD가 최신 커밋보다 더 이전의 커밋을 가리키게 된다면
워킹 디렉토리의 내부도 그 과거 커밋의 모습대로 바뀌게 된다.
HEAD가 어떤 커밋을 가리키고 있는 존재고 HEAD가 가리키는 커미의 내용대로
워킹 디렉토리가 구성된다.
한번 이 HEAD가 더 이전에 했던 커밋을 가리키도록 해보자
Git reset
reset은 초기화하다, 다시 설정하다 라는 뜻이며
이 다음에 한칸 띄우고 --hard 옵션을 사용하며 herd 옵션은 reset과 함께 쓰는 옵션중 하나이다.
그 다음 다시 한칸 띄우고 커밋 아이디 4자리를 써준다.
한번 기존 HARD 바로 밑에있는 커밋으로 지정해보자 (48d8)
HEAD가 옮겨진 것을 확인 할 수있다.
워킹 디렉토리의 내용도 바뀌었는지 확인해보면
"좀 더 노력하자" 문구가 사라진 것을 볼 수있다.
HEAD가 옮겨짐에 따라 최신커밋의 기준에 따라 이 전 커밋으로 돌아가게된 것이다.
정리
이렇게 "git reset" 을 사용하면 헤드가 과거의 커밋을 가리키게 할 수있고
워킹 디렉토리의 내용도 과거의 커밋의 상태로 돌아가게 할 수있다.
"git resset"은 과거 커밋으로 아예 돌아가고 싶을 때 사용한다.
예를 들어서 특정 시점 이후로 어떤 커밋을 한 이후로 작업 내용이 마음에 안들때
마지막으로 마음에 들었던 커밋으로 돌아갈 수있게 해준다.
그리고 그 커밋부터 새로 작업을 다시 시작하면 된다.
'Git' 카테고리의 다른 글
Git (12)~(16) 까지 커맨드 정리 (0) | 2024.09.06 |
---|---|
(16) Git reset 3가지 옵션 및 실행 결과 보기 (0) | 2024.09.06 |
(14) Git - 커밋 A 와 B의 사이의 커밋 확인하기 [git diff] (0) | 2024.09.05 |
[+α] Git 긴 커맨드 사용할때 alias 설정 (커맨드의 별명) (0) | 2024.09.04 |
(13) Git - 최신 commit 수정하기 [--amend] (0) | 2024.09.04 |