Git 브랜치가 뭘까? 복잡한 무언가가 아니라, 그냥 특정 커밋을 가리키는 포인터다. 이게 전부다.
git checkout -b feature 명령을 실행하면, Git은 현재 HEAD가 가리키고 있는 커밋에 feature라는 이름표를 붙인다. 그리고 HEAD를 그 이름표로 옮긴다.
나무의 가지를 떠올려보자. dev 브랜치라는 큰 가지가 있고, 여기서 feature라는 새 가지가 뻗어나간다.
이제 feature 가지 끝에 서 있다. 여기서 git checkout -b feature2를 하면? feature2는 feature의 끝에서 뻗어나간다. dev로 돌아가지 않았으니까.
dev ─→ feature ─→ feature2
(한 줄로 이어짐)
만약 2개의 독립적인 가지를 만들고 싶다면, 반드시 dev로 돌아가야 한다.
git checkout dev
git checkout -b feature
# feature에서 작업 후
git checkout dev # dev로 돌아가기
git checkout -b feature2
이렇게 하면 비로소 2줄로 분기된다:
┌─ feature
dev ────────┤
└─ feature2
체계적인 팀의 Git 그래프를 보면 여러 줄로 갈라져 있다. 각 개발자가 작업을 시작할 때: