-
Git BranchGit 2021. 6. 14. 23:52
깃 브랜치는 기존 폴더를 복제하는 것과 다르게 가상 폴더를 사용하여 개발 작업을 구분합니다.
브랜치는 다음과 같은 특징들이 있다.
가상폴더
깃의 브랜치는 작업 폴더를 실제로 복사하지 않고, 가상 폴더로 생성한다. 외부적으로는 물리적인 파일 하나만 있는 것으로 보인다.
생성된 작업 폴더는 물리적으로 복제된 구조보다 유연하게 처리할 수 있다. 브랜치로 생성된 가상 폴더는 빠르게 공간 이동이 가능하고, 개발자는 쉽게 가상 폴더인 브랜치를 이동하면서 프로젝트를 수행할 수 있다.
독립적인 공간
브랜치를 이용하면 원본 폴더와 분리하여 독립적으로 개발 작업을 수행할 수 있다. 기존에는 소스 코드의 작업 폴더를 별도로 생성했다. 물리적으로 복사된 각자의 폴더에서 코드를 작업 한 후 소스 코드 2개를 다시 하나로 합쳐야 했다. 코드를 하나로 합치려면 작업 내역들을 일일이 찾아 정리해야 한다. 여기서 소스 코드를 하나로 통합하는 것은 매우 힘든 작업이다.
하지만 깃과 같은 버전 관리 시스템을 통해 분리된 코드를 좀 더 쉽게 병합할 수 있다. 분리된 브랜치에서 소스 코드를 각자 수정한 후 원본 코드에 병합하는 명령만 실행하면 된다.
빠른 동작
다양한 버전 관리 도구도 브랜치 기능을 지원한다. 보통 다른 VCS들은 브랜치를 생성할 때 내부 파일 전체를 복사한다. 이때 파일 크기가 매우 크다면 브랜치를 생성하는데 시간이 오래 걸린다.
하지만 깃의 브랜치 기능은 다른 버전 관리 도구보다 가볍고, 브랜치 전환이 빠른 것이 특징이다.
깃은 Blob 개념을 도입하여 내부를 구조화 한다. Blob은 포인트와 유사한 객체이다. 깃은 브랜치를 변경할 때 포인터를 이동하여 빠르게 전환한다.
깃은 기본적으로 master 브랜치를 하나 가지고 있다. 그리고 브랜치는 HEAD 포인터를 가지고 있다.
모든 커밋과 이력은 브랜치에 기록된다. 깃은 최소한 브랜치가 1개 이상 필요하다. 따라서 저장소를 처음 초기화하면 master 브랜치 하나가 자동으로 생성된다. 첫 번째 커밋은 마스터 브랜치에서 시작하게 되는 것이다.
브랜치는 가상의 작업 폴더이다. 처음 깃을 초기화할 때 워킹 디렉터리는 master 브랜치를 생성한다. 브랜치를 생성하려면 기준이 되는 브랜치 또는 커밋이 하나 있어야 한다. 그리고 깃은 master 브랜치를 기준으로 새로운 브랜치를 생성한다.
브랜치는 공통된 커밋을 가리키는 지점이라고 생각해도 좋다. 커밋처럼 SHA1 해시키를 가리는데 기억하기가 어렵기 때문에 특정 커밋을 가리키는 별칭을 만든다. 이렇게 만든 별칭이 브랜치인 것이다.
즉, 브랜치를 생성한다는 의미는 기존 브랜치 또는 커밋에 새로운 연결 고리를 하나 더 만드는 것과 같다.
새 브랜치를 생성하면 포인터만 있는 브랜치가 생성된다. 일반적으로 브랜치 생성 명령을 실행하면 현재 커밋을 가리키는 HEAD를 기준으로 생성된다.
새롭게 브랜치가 생성되면 독립된 공간을 할당하게 된다. 기존 작업 영역에는 영향을 주지 않는 새로운 가상 공간이다. 이것으로 인해 기존 브랜치의 소스 코드에 영향을 주지 않고 새로운 작업을 할 수 있다.
브랜치는 깃에서 또 하나의 개발 분기점을 의미하기도 한다. 새로운 개발 분기점이 필요할 때는 브랜치를 추가로 생성할 수 있다. 브랜치 생성 개수에는 제한이 없다. 필요한 만큼 여러 브랜치를 생성할 수 있으며, 각 브랜치를 구별하려면 브랜치별로 이름을 지정해야 한다.
브랜치 이름 명명 규칙
- 기호(-)로 시작할 수 없습니다.
- 마침표(.)로 시작할 수 없습니다.
- 연속적인 마침표(..)를 포함할 수 없습니다.
- 빈칸, 공백 문자, 물결(~), 캐럿(^), 물음표(?), 별표(*), 대괄호([]) 등은 포함할 수 없습니다.
- 아스키 제어 문자는 포함할 수 없습니다.
- 브랜치 이름은 중복해서 사용해서는 안됩니다.
'Git' 카테고리의 다른 글
Git-Merge/Confilct (0) 2021.06.23 Git Branch-2 (0) 2021.06.15 Git - .gitigonre (0) 2021.06.10 Git 과 GitHub (0) 2021.06.07