본문 바로가기

ETC/Git

GitHub 3 - 브랜치(Branch)의 개념

이미 돌아가고 있는 프로그램에서 기능을 바꾸고 싶은 일이 생길 수 있습니다.

그렇게 어떻게 해야하나요? 보통 저 같은 초보 개발자들은 주석을 활용합니다.

 

돌아가고 있는 부분을 삭제하면 아깝거나 혹은 나중에 쓰일 것 같아서, 기억 못할 것 같아서 주석 처리하고 개발합니다.

시간이 지나면 코드는 엉망진창으로 섞여버리는데 이런 코드를 스파게티 코드라고 많이들 부릅니다.

 

이런 상황을 막기 위해서 브랜치(분기)를 사용합니다.

 

 

 

 

제일 마지막으로 위와 같이 내용을 수정하고 커밋하였습니다.

 

마지막 작업으로 작업하기 싫은데... 마음에 안들어!!!

그렇다면 내가 작업 시작하고 싶은 커밋으로 새 브랜치를 만들어보겠습니다.

 

 

해당 커밋에서 우클릭하여 브랜치...를 눌러줍니다.

 

 

저는 version2 라는 이름으로 브랜치를 생성해주었습니다.

 

 

 

해당 커밋 앞에 version2 라는 브랜치의 이름이 붙었고 좌측 사이드에 version2 라는 브랜치가 생성되었습니다.

좌측 사이드에 version2 브랜치로 들어가면 해당 커밋부터 시작할 수 있게됩니다.

 

이러한 행동을 GitHub에서는 checkout이라고 합니다.

 

checkout

특정 브랜치(혹은 커밋)으로 돌아가고 싶을 때 사용합니다.

SourceTree에서의 체크아웃은 브랜치 이름을 더블 클릭하는 것만으로도 체크아웃이 가능합니다.

 

좌측 사이드의 version2 브랜치를 더블 클릭해보세요.

 

 

위와 같이 원래대로 되돌아갔습니다.

 

자, 저는 브랜치의 개념을 설명하려는 것이 아닌 다른 내용을 추가하고 싶습니다.

그래서 아래와 같이 다시 내용을 수정했습니다.

 

 

 

여기서 중요합니다.

저장하고 SourceTree의 커밋을 유심히 살펴보세요.

 

 

제일 마지막 커밋으로 가지가 뻗어있고 test.jsp 파일 생성이라는 커밋의 머리 부분에는 검은 테두리의 작은 원과 브랜치의 색깔이 분홍색으로 바뀌었습니다.

 

검은 테두리의 작은 원은 version2 브랜치에서의 현재 작업중인 커밋이라는 것을 뜻하고,

분홍색으로 변한 브랜치는 이 것을 현재 브랜치, 헤드 브랜치라고 얘기를 합니다.

 

그런데 브랜치를 생성하지 않았을 때도 master라는 브랜치는 자동으로 생성되어 있었습니다.

브랜치는 하나의 가상 작업 공간일뿐 완성된 최종본은 항상 master 브랜치에 존재해야합니다.

 

 

이제 완벽히 수정한 위 커밋들을 병합(merge)할 필요가 있습니다.

다음 포스팅에서 다루도록 하겠습니다.