본문
10. git reset의 옵션을 배우기 전에 확실히 알아야 할 부분
자, 이제부터는 git reset 커맨드에 대해서 좀더 깊게 배워볼 건데요. 그 전에 꼭 확실하게 알고 넘어가야할 사실 2가지를 말씀드리겠습니다.
1. git reset을 쓸 때 --hard는 뭐였을까?
이전 영상에서 git reset을 했더니
- HEAD가 과거의 커밋을 가리키게 되었고
- working directory의 내부도 그 과거 커밋의 모습처럼 바뀌었습니다.
그런데 여기서 중요한 사실이 하나 있습니다. 그건 바로 제가 git reset 뒤에 --hard라는 옵션을 썼다는 사실입니다.
사실 git reset과 함께 쓸 수 있는 옵션에는 --hard 말고도 --soft, --mixed라는 옵션들도 있습니다.
그리고 이 3가지 옵션들의 정확한 차이점을 다음 영상부터 자세히 배워볼 겁니다.
여기서 한 가지만 짚고 넘어가자면 이전 영상에서 봤던 결과인
- HEAD가 과거의 커밋을 가리키게 되는 결과는 git reset에서 어느 옵션을 쓰든 항상 똑같습니다.
- 하지만 working directory의 내부도 그 과거 커밋의 모습처럼 바뀌는 건 --hard 옵션을 썼기 때문에 그런 겁니다.--soft, --mixed 옵션을 쓰면 그렇지 않은데요. 다음 영상에서 자세히 알아볼게요.
2. staging area에 있던 것들은 커밋하고 나면 어떻게 될까?
우리는 프로젝트 디렉토리 안의 파일을 수정하고 git add를 해서 staging area에 올린 다음 커밋을 합니다. 그런데 커밋을 하고 나면 staging area에 있던 파일들은 어떻게 될까요? 사라지는 걸까요?
그건 아닙니다. 그냥 그 상태 그대로 남아있습니다. 그러니까 커밋을 했다고 staging area가 초기화되거나 하지는 않는 겁니다.
계속 git add를 할 때마다 staging area에서는 새로운 파일이 추가되거나 원래 있던 파일이 더 새로운 버전의 것으로 교체되거나 할 뿐입니다.
원래 있던 게 사라지는 게 아니라요.
(이 말이 어떤 의미인지는 사실 Git의 내부 작동 원리를 잘 알아야 정확히 이해할 수 있습니다. 일단은 이렇게 이해하고 넘어가세요.)
이 사실을 확실히 기억하고 넘어가야 다음에 배울 git reset의 옵션에 관한 내용들을 잘 이해할 수 있습니다.
staging area에 있던 것들은 커밋을 하더라도 그것과 상관없이 계속 남아있다는 점, 잘 기억하세요!
댓글