checkout이 정확히 뭘 하는지 몰랐는데 HEAD를 움직이는것이라는 걸 알았다. 지금까진 작업하는 디렉토리를 옮기는 것이라고만 알았다. 다른 브랜치로 checkout하는 것은 다른 브랜치로 HEAD를 옮기는 것이다. 또 브랜치도 커밋을 참조하고 있는 것이었다. HEAD를 커밋의 해시로 체크아웃하면
HEAD는 브랜치가 아니라 커밋으로 이동할 수 있다.
git branch -f main HEAD~3
: main브랜치를 HEAD보다 3칸 위의 부모 커밋으로 이동시킨다.