여러분은 Git을 쓸 때 git reset 커맨드를 얼마나 자주 사용하시나요?
git reset은 HEAD의 위치를
현재 커밋에서
- 과거의 커밋으로 이동시킬 수도 있고,
- 미래의 커밋으로 이동시킬 수도 있는
중요한 커맨드입니다.
하지만 많은 분들이 git reset을 사용할 때 겁을 먹곤 합니다. 리셋이라는 단어가 주는 공포감 때문에 혹시라도 이 커맨드를 실행했다가 작업했던 것이 전부 날아가는 게 아닌가하는 걱정 때문인데요.
하지만 git reset이 무슨 일을 하는지 정확하게 이해하고 나면 전혀 걱정할 필요가 없습니다. git reset에는 아래와 같은 3가지 옵션이 있는데요.
(1) —soft
(2) —mixed
(3) —hard
이 옵션 간의 차이를 정확히 알아야 git reset을 제대로 사용할 수 있게 됩니다.
각 옵션 별로 어떤 점이 다른지 설명해드릴게요.
(1) —soft 옵션
—soft 옵션을 쓰면 HEAD가 특정 커밋(과거 또는 미래)을 새롭게 가리키게 됩니다. 대신 현재 작업 중인 working directory와 staging area는 아무런 영향을 받지 않습니다. 그림으로 표현하면 아래와 같습니다.
(2) —mixed
—mixed 옵션을 쓰면 HEAD가 특정 커밋(과거 또는 미래)을 새롭게 가리키게 됩니다. 그리고 staging area도 해당 커밋의 모습과 동일하게 변합니다. 하지만 현재 작업 중인 working directory는 아무런 영향을 받지 않습니다. 아래 그림을 보면 이해하실 수 있습니다.
(3) —hard
—hard 옵션을 쓰면 HEAD가 특정 커밋(과거 또는 미래)을 새롭게 가리키게 됩니다. 그리고 staging area와 현재 작업 중인 working directory도 해당 커밋의 모습과 동일하게 변합니다. 아래 그림처럼요.
사실 이 옵션은 좀 주의해서 사용해야 합니다.
만약 현재 working directory에서 어떤 작업을 하다가
아직 커밋을 하지 않았는데
—hard 옵션으로 git reset을 해버리면 이때까지 작업했던 게 다 날아가버리기 때문입니다.
—hard 옵션의 경우에는 주의해서 사용할 필요가 있는 거죠.
어떤가요? git reset의 사용법이 이제 좀 이해되시나요? 만약 이때까지의 설명 중에 모르는 용어가 있어서 이해를 못한 분이 계시다면 git을 기초부
터 다시 공부할 필요가 있습니다.
그런 분들은 코드잇에서 Git의 동작 원리와 사용법을 자세하게 알려주는 토픽이 있으니까 꼭 수강해보세요!
코드잇 멤버십 유저가 아니라면, 여기서 확인하세요 :)
코드잇 멤버십 유저라면, 여기서 자세히 확인하세요 :)