본문 바로가기
Lecture/Git

[4-DAY] branch

by 손프로 2022. 9. 25.

<교육을 들으며 혼자 정리한 내용으로 지식습득을 목적으로 읽기에는 정확하지 않은 정보가 있을 수 있음>

 

커밋을 하게 되면 숫자와 문자가 조합된 해시를 가지게 된다

그리고 그 해시는 적어도 이전에 부모 커밋 하나를 참조하며 직선상의 경우 아래 그림과 같다.

하지만 실제로 협업하여 프로젝트를 같이 운영하다 보면 이렇게 직선형태로만 작업이 진행되지 않고

각자 파트 별로 나뉘어 동시에 작업을 하는 경우가 생기게 되고 이 경우 각자 새로운 타임라인을 갖게 해주는 것이

브랜치 이다. 이 브랜치 별 독립적으로 작업하여 이것을 나중에 통합하는 방식으로 프로젝트를 진행한다.

(1일차 강의 이미지 참고)

 

브랜치는 마스터 브랜치와 토픽브랜치(피처브랜치)로 나눌 수 있으며

마스터브랜치는 git init 명령어로 저장소 생성 시 디폴트로 생성되는 브랜치이고

토픽브랜치는 작업을 위해 마스터브랜치에서 따온 작업 브랜치를 얘기한다.

 

보통 마스터브랜치는 수정하지 않고 안전하게 관리하고

토픽브랜치에서 작업하여 성공적으로 작업이 이루어질 경우 마스터브랜치에 병합하여 사용한다.

 

내가 어떤 브랜치에 있는지 확인은 HEAD가 가리키는 것을 확인하면 된다

 

git branch / git branch BRANCHNAME

    저장소에 현재 존재하는 브랜치를 보여주는 명령어로 빠져나갈때는 q를 입력한다

    (강의에서는 이렇게 설명하는데 본인이 확인 시 존재하는 브랜치 보여주고 자동으로 나가진다)

    git branch 명령어로는 브랜치 확인만 가능하고 생성을 위해서는 뒤에 브랜치 이름을 추가하여 입력한다.

    해당 명령어로 브랜치 생성만 되며 이동도 따로 명령어를 입력해야한다.

 

    브랜치 삭제를 원할 때는 git branch -d BRANCHNAME 과 같이 -d 옵션을 사용하며

    병합과 관계없이 강제적으로 삭제하고 싶을 경우 -D(대문자) 옵션으로 사용하면 된다

    삭제 시 삭제하려는 브랜치에 위치하면 삭제 되지 않는다.

 

    브랜치 이름을 변경하고 싶을 때는 git branch -m 변경할 이름 과 같이 -m 옵션을 사용하며

    이 경우는 삭제와 반대로 내가 변경하려는 브랜치에 위치해야 한다.

 

git switch BRANCHNAME (git chechout BRANCHNAME)

    브랜치를 이동하는 명령어다.

    위에서 브랜치 생성 시 이동은 다시 명령어를 입력해야 한다고 했는데

    git switch -c BRANCHNAME 과 같이 -c 옵션을 사용하면 브랜치 생성 후 바로 해당 브랜치로 이동되어진다.

    

    브랜치 이동 시에는 주의할 점이 있는데

    현재 브랜치에서 다른 브랜치에 존재하지 않는 파일을 생성하고 add나 commit 없이 브랜치를 이동하면

    이동한 브랜치에서도 해당 파일이 변경이력에 보여지게 된다.

    프로젝트에서 작업하는 내용을 분리하기 위한 브랜치 사용 목적과 맞지 않으니

    위와 같은 상황이 생기지 않도록 주의해야하며 이것과 관련한 스태시 강의는 이후에 설명한다

 

다이어그램 요약

현재 상태가 위와 같을 경우

 

git branch ABRANCH : ABRANCH 라는 브랜치 생성

MASTER BRANCH와 동일한 상태의 ABRANCH 생성되었으나 HEAD는 아직 마스터브랜치를 바라보는 상태

 

git switch ABRANCH : ABRANCH로 브랜치 이동

HEAD 이동 이제 ABRANCH에서 4.5.6 방향으로 작업이 진행된다

 

댓글