모든 버전 관리 시스템은 브랜치를 지원합니다.
개발을 하다 보면 코드를 여러 개로 복사해야 하는 일시 자주 생깁니다.
코드를 통째로 복사하고 나서 원래 코드와 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치입니다.
사람들은 브랜치 모델이 Git의 최고의 장점이라고, Git이 다른 것들과 구분되는 특징이라고 말합니다.
당최 어떤점이 그렇게 특별한걸까요?
Git 브랜치는 매우 가볍습니다.
순식간에 브랜치를 만들고 브랜치 사이를 이동할 수 있습니다.
다른 버전 관리 시스템과는 달리 Git은 브랜치를 만들어 작업하고 나중에 Merge하는 방법을 권장합니다.
심지어 하루에 수십 번씩해도 괜찮습니다.
Git 브랜치에 능숙해지면 개발 방식이 완전히 바뀌고 다른 도구를 사용할 수 없을 정도입니다.
Git이 브랜치를 다루는 과정을 이해하려면 우선 Git이 데이터를 어떻게 저장하는지 알아야 합니다.
Git은 데이터를 Change Set이나 변경사항(Diff)으로 기록하지 않고 일련의 스냅샷으로 기록한다는 것을 시작하기에서 보여줬습니다.
커밋하면 Git은 현 Staging Area에 있는 데이터의 스냅샷에 대한 포인터, 저자나 커밋 메시지 같은 메타데이터, 이전 커밋에 대한 포인터 등을 포함하는 커밋 개체(커밋 Object)를 저장합니다.
이전 커밋 포인터가 있어서 현재 커밋이 무엇을 기준으로 바꿔었는지를 알 수 있습니다.