커밋은 숫자와 문자가 연속적으로 조합된 특이한 해시를 가짐
커밋 내용에 부합하며, 그 이전의 부모 커밋 하나를 참조함(아래 이미지 참고)
보라색 → 분홍색 → 파란색 순으로 커밋
그러나 가끔 동시 작업할 경우 두가지를 모두 시도해서 어떤것이 더 좋은지 결정하거나 버그를 수정할 때 코드 삭제와 수정 및 추가를 반복해야 하는 경우 발생
(ex. 화면의 색상 조합 수정과 챗봇 기능 수정이 동시에 이루어져야 할 경우)
이러한 경우 각 작업들은 별도로 이루어져야 함
⇒ 브랜치 사용
브랜치는 깃의 가장 특징적인 기능이며, 일종의 타임라인
원할때마다 별도의 콘텍스트를 설정할 수 있도록 해줌
그리고 독립된 콘텍스트에서 작업하다가도 적당한 때에 병합도 가능
브랜치를 만들지 않았어도 항상 브랜치는 있음
보통 기본 브랜치로 사용하고 마스터 브랜치에서는 특별한 작업을 하지 않고 병합에만 사용
→ master branch; 깃허브에서는 2020년부터 main으로 변경
깃 용어 중 하나
저장소에서 현재 나의 위치를 가리키는 포인터
브랜치 레퍼런스(현재 위치)를 가리킴
책갈피와 같은 역할
브랜치를 전환하면 HEAD의 위치가 전환할 브랜치의 위치로 감
git log 명령어를 통해 현재 HEAD의 위치가 어디인지 알 수 있음
git branch
: 현재 존재하는 브랜치의 목록을 보여줌
git branch <브랜치 이름>
: 브랜치 생성
git checkout <브랜치 이름>
: 특정 브랜치로 HEAD 변경
git switch <브랜치 이름>
: 특정 브랜치로 HEAD 변경
git switch vs checkout 차이
요약: checkout이 기능이 너무 많아 브랜치를 변경하는 기능만 적용된 명령어인 switch를 주로 사용 추천
새 버전에 맞게 git checkout 대신 switch/restore 사용하기 :: Outsider's Dev Story
Git Switch vs Checkout: Pros and Cons
git switch -c <브랜치 이름>
또는 git checkout -b <브랜치 이름>
: 특정 브랜치를 만들고 해당 브랜치로 HEAD 변경
git branch -d <브랜치 이름>
: 브랜치 삭제
git branch -d <브랜치 이름>
: 브랜치 강제 삭제(--force 옵션 추가)
git branch -m <브랜치 이름>
: 현재 HEAD에 있는 브랜치 이름 변경