git checkout [Option] [이동할 브랜치]
git branch -b <branch>
: 브랜치를 새로 생성하고 생성된 브랜치로 이동까지 동시에 수행한다.
git checkout -f <branch>
: Working Directory의 인덱스가 HEAD와 다른 경우(즉, Staging하지 않은 작업물이 있을 때)에도 강제로 브랜치를 전환시킴
-f
옵션은 대부분 "강제로 ~를 수행한다"라는 의미를 가진다. 단지, -f
옵션을 사용할 경우 작업했던 내용이 날아갈 수 있고 심각한 문제를 일으킬 수 있으므로 확실한 이유가 있는 것이 아니라면 사용하지 않는 것을 추천한다.브랜치 이동과 직접적인 연관성은 없지만 브랜치 이동이 곧 HEAD가 가리키는 커밋이라는 것을 이해했다면 알아두면 좋을 개념이 바로 "Detached HEAD"이다.
Git에서는 작업할 브랜치에 따라 HEAD가 달라지며, 이는 HEAD가 브랜치에 존재하는 커밋을 가리키고 있기 때문이다.
정상적인 상태라면 HEAD는 원래 간접적으로 커밋(Commit/버전)을 가리켜야 하며 이를 "attached HEAD" 상태라고 한다.
하지만 Git은 LinkedList형식으로 커밋이 구성되어 있으므로 과거 커밋도 저장하고 있으며, 당연히 Git 명령어를 통해 과거 커밋으로도 갈 수 있다.
이렇게 HEAD가 과거 커밋을 보고 있는 경우 과거 커밋은 브랜치의 최신 커밋을 바라보고 있기 때문에(자식 노드로 가지고 있기 때문예) HEAD와 브랜치가 떨어져 있는 상태가 된다.
그리고 이를 "Detached HEAD" 상태라고 한다.