Git 교과서

코드 이력, 하나도 놓치지 마라!

버전 관리 시스템의 이해와 설치부터 커밋, 브랜치, 임시 처리, 병합, 복귀, 서브모듈, 태그까지
깃, 소스트리, 깃허브로 실습하며 기본기를 탄탄하게 다진다!

Yes24 교보문고 알라딘 인터파크 길벗

브랜치


소스 코드 이력을 관리하는 버전 외에 깃과 같은 VCS 도구를 사용하는 또 다른 이유는 브랜치 작업 때문입니다. 이 장에서는 브랜치를 자세히 알아봅니다.


새로운 작업


브랜치(branch)는 나뭇가지, 지사, 분점 등 줄기 하나에서 뻗어 나온 갈림길을 의미합니다. 큰 나무 줄기에서 작은 줄기가 뻗어 나오는 것처럼 저장 공간 하나에서 가상의 또 다른 저장 공간을 만드는 것이라고 생각하면 됩니다.


실습 준비


깃은 기본적으로 master 브랜치를 하나 가지고 있습니다. 그리고 브랜치는 HEAD 포인터를 가지고 있습니다. 실습으로 구체적인 브랜치 작업과 HEAD 동작을 알아보겠습니다.


브랜치 생성


브랜치는 가상의 작업 폴더입니다. 처음 깃을 초기화할 때 워킹 디렉터리는 master 브랜치를 생성합니다. 브랜치를 생성하려면 기준이 되는 브랜치 또는 커밋이 하나 있어야 합니다. 그리고 깃은 master 브랜치를 기준으로 새로운 브랜치를 생성합니다.


브랜치 확인


브랜치 세부 사항을 확인하는 방법을 알아보겠습니다.


브랜치 이동


브랜치를 생성했다고 해서 자동으로 생성된 브랜치로 이동하지는 않습니다. 이번에는 생성된 브랜치 간 작업 영역을 이동하는 방법을 알아봅시다.


브랜치 공간


브랜치에서 다른 브랜치로 이동하면 워킹 디렉터리는 변경됩니다. 이 절에서는 브랜치와 워킹 디렉터리가 어떤 관계가 있는지 자세히 알아보겠습니다.


HEAD 포인터


깃은 객체의 포인터 개념을 사용합니다. 대표적인 객체 포인터는 HEAD입니다. 깃 동작을 정확히 이해하려면 먼저 HEAD가 무엇인지 알아 두는 것이 좋습니다.


생성과 이동


깃의 브랜치를 생성하는 동작과 이동하는 동작은 별개입니다. 브랜치 생성은 branch 명령어를 사용하고, 브랜치 이동은 checkout 명령어를 사용합니다. 브랜치를 생성하면서 동시에 생성된 브랜치로 이동하려면 별도의 명령을 실행해야 합니다.


원격 브랜치


깃은 다수의 개발자와 협업으로 코드를 유지할 수 있습니다. 주요 개발 작업들은 로컬 저장소에서 하지만 협업은 원격 저장소도 공유합니다.


브랜치 전송


로컬 저장소의 브랜치를 원격 저장소로 전송하는 다른 방법을 살펴봅시다.


브랜치 삭제


브랜치 삭제는 크게 스테이지 상태에 따라 달라집니다.


정리


이 장에서는 브랜치 개념과 여러 브랜치를 이동하고 작업하는 방법들을 알아보았습니다. 브랜치는 기존 코드를 가상으로 분리합니다. 분리해서 격리된 브랜치는 상호 간섭 없이 별개 작업을 수행할 수 있습니다. 새로운 프로젝트로 발전시켜 나아갈 때 브랜치 기능은 매우 유용합니다.

깃의 브랜치는 다른 개발자와 협업하여 프로젝트를 진행할 때도 매우 유용합니다. 서로 간섭 없이 코드를 개선하고, 나아가 병합도 가능하기 때문입니다. 처음에는 브랜치를 좀 어렵게 느낄 수 있습니다. 하지만 깃의 원리와 개념을 잘 이해하고, 자주 사용하다 보면 생각보다 그리 어렵지 않습니다.