다른 사람들이 깃과 관련된 대화를 할 때에, 브랜치(branch)는 정말 많이 들어본 용어였다. 그래서 이건 무슨 의미일까 하고 궁금해하곤 했는데 나도 드디어! 브랜치가 무엇인지, 어떻게 사용하는 것인지, 공부를 통해 알게 되었다.

브랜치(branch)란 무엇일까?
구글 번역기에서 branch를 검색하면 '나뭇가지'로 번역된다.

깃에서의 브랜치는 독립적으로 어떤 작업을 할 수 있는 코드 관리 흐름이다. (이게 무슨 소리...?)
하나의 프로젝트가 있고 그 안에서 두 개의 버전을 만들어야 하는 경우, 공통 부분을 제외한 특정 시점부터는 다른 코드로 관리를 하게 되는데 그러한 버전의 흐름을 브랜치라고 부른다. 혹은 여러 사람과 협업 시에 각각의 브랜치를 만들어서 따로 작업을 하고, 작업을 모두 마치고 나면 그 결과를 한 군데로 합쳐서 관리할 수도 있다. 그러면 문제가 발생했을 때에 원인을 찾아내는 것도 훨씬 수월할 것이다.
즉, 브랜치를 만들어서 작업을 하면, 그 이후의 작업물은 다른 사람의 작업에 영향을 주지 않고 독립적이기 때문에 협업에 유리한 것이다.

git status 명령어를 실행하면 On branch main 이라는 문장을 발견할 수 있는데, 이것은 main 이라는 브랜치 위에 있다는 의미이다. 그리고 main은 저장소(Repository)를 생성하고 커밋(commit)을 하면 기본으로 세팅이 되는 브랜치이다.
브랜치 생성 방법
브랜치는 아래와 같은 명령어를 사용하여 새로 만들 수 있다.
git branch 만들고 싶은 브랜치 이름

위의 명령어를 실행하면 main 브랜치 외에 premium 이라는 이름을 가진 브랜치가 새로 만들어진다. 그리고 아직까지 만들었던 모든 작업 결과물이 해당 브랜치에도 속하게 된다.
브랜치 사용 방법
브랜치를 생성하는 방법에 대해서 알아보았으니, 이제는 브랜치를 사용해보도록 하자. 현재 어떤 브랜치들이 생성되어 있는지 조회하고 새로 생성한 브랜치 위로 이동을 하고, 브랜치를 삭제하는 방법에 대해서 설명하도록 하겠다.
현재 레포지토리에 있는 모든 브랜치 조회하기
git branch
추가 옵션 없이 git branch 라는 명령어를 입력하면 현재 레포지토리에 있는 모든 브랜치를 조회할 수 있다. 아래와 같은 결과가 나오는 경우 현재 mathtool 프로젝트에는 main, premium, test - 총 3개의 브랜치가 존재하는 것이다. 참고로 브랜치 앞에 별(*)이 있는 것은 현재 내가 어떤 브랜치 위에서 작업을 하고 있는지 알 수 있는 표시이다.

생성한 브랜치로 이동하는 방법
git checkout 가고 싶은 브랜치 이름

git checkout 뒤에 이동하고 싶은 브랜치명을 적어 실행하면, 해당 브랜치 작업영역으로 이동한다. 위의 예시는 premium 이라는 브랜치로 이동한 결과인데, Swiched to branch '브랜치명' 이라는 메세지와 함께 기존에 있던 (main)이라는 텍스트가 (premium)으로 바뀐 것을 확인할 수 있다. 앞으로 여기서 작업하여 커밋하는 내용은 모두 해당 브런치에만 반영되며, main branch와 상관없게 된다.
브랜치 삭제하는 방법
git branch -d 삭제하고 싶은 브랜치명
delete의 약자인 -d 옵션을 사용하면 브랜치를 쉽고 빠르게 삭제할 수 있다. 아래 예제는 today 라는 브랜치를 생성한 후에 다시 삭제한 것이다. 해당 브랜치가 제대로 생성되고 삭제되었는지 중간에 git branch를 사용하여 확인했다.

브랜치를 생성하는 동시에 해당 브랜치로 바로 이동하기
브랜치를 생성한다는 것은 곧 새로운 가지가 필요하다는 의미인데, 그렇다면 생성과 동시에 바로 이동할 수는 없을까? 브랜치를 생성하는 동시에 해당 브랜치로 바로 이동시켜주는 옵션이 있다. git checkout 과 함께 -b 옵션을 사용하고 이어서 만들고 싶은 브랜치명을 적어주면 된다.
git checkout -b 브랜치명

정말 git은 공부하면 할수록 흥미진진한 것 같다. (왜 질리지 않지?) 다음 포스팅에서는 브랜치 머지에 대해서 정리해 볼 예정이다.
'개발 도구 > Git' 카테고리의 다른 글
브랜치 머지(branch merge)하는 방법 (0) | 2022.11.16 |
---|---|
맥북 업데이트 후에 git 에러 해결방법(xcrun error) (0) | 2022.11.15 |
중요한 커밋(commit)에 태그(tag)넣는 방법 (0) | 2022.11.09 |
특정 커밋 시점으로 돌아가고 싶을 때(git reset) (0) | 2022.11.09 |
두 커밋 사이의 차이점 비교하기(git diff) (0) | 2022.10.25 |
댓글