git 쓴 지 몇 달 됐는데 아직도 reset이 제일 헷갈립니다. 커밋 하나 되돌리려고 검색하면 어떤 글은 git reset --soft HEAD~1 이렇게 쓰라 하고, 어떤 데는 --mixed, 또 어떤 데는 --hard 쓰라고 해서 뭐가 맞는지 모르겠어요.


그냥 한 번은 아무 생각 없이


git reset --hard HEAD~1


이렇게 쳤다가 방금 짜놓은 코드가 통째로 사라져서 식겁했습니다. 다행히 에디터에 열려 있어서 살리긴 했는데요, 이 셋이 정확히 뭐가 다른 건가요?


제가 이해한 건 셋 다 커밋을 뒤로 되돌리긴 하는데, 작업하던 파일 내용이 남느냐 마느냐가 다른 거 같긴 한데 정확히는 모르겠어요. --soft는 그나마 안전하고 --hard가 위험한 거 맞나요? staging 영역이랑도 관련이 있다던데 그 부분도 좀 풀어서 설명해 주시면 감사하겠습니다. 언제 뭘 써야 하는지 감이 안 잡혀서요.