[Git] 브랜치 관리 및 사용

브랜치 관리

지금 git 저장소에 몇 개의 브랜치가 있는지, 내가 사용하고 있는 브랜치는 무엇인지, 병합여부는 어떤지 알 수 있을까? 브랜치 관리 명령어에 대해 알아보자.

$ git branch <브랜치이름> 은 새로운 브랜치를 만드는 명령이었다. 여기서 옵션을 제거한 그냥 $ git branch는 존재하는 브랜치의 목록을 보여준다.

$ git branch
  iss53
* master
  testing

위와 같은 상황에서 *는 HEAD, 현재 작업하고 있는 브랜치를 나타낸다. 만약 커밋메세지도 함께 확인하고 싶다면 -v옵션을 추가하면 된다.

병합 여부 또한 확인할 수 있다. --merge, --no-merge 옵션을 사용하는데, 별다른 브랜치의 언급이 없다면 현재 브랜치를 기준으로 병합 여부를 확인한다(ex : $ git branch --no-merged master).

--merge 옵션에서 *표시를 제외하면 전부 병합된 커밋들이다. 사실상 -d옵션으로 삭제해도 문제되지 않는다. 반대로 --no-merge옵션에 나오는 브랜치들은 아직 병합하지 않았으므로, 삭제시 문제가 발생한다. 일반적인 git branch -d로는 삭제되지 않으며, -D옵션을 사용해야한다.


브랜치 워크플로

브랜치의 생성과 merge를 배웠지만, 이를 어떻게 잘 사용할 수 있을지는 아직 모른다. 브랜치의 유용한 사용을 위한 몇 가지 워크플로를 살펴보자.

Long-Running 브랜치

배포했거나 배포할 안정된 코드만 master브랜치에 merge하는 방식이다. 개발을 진행하고 안정화 하는 브랜치는 develop이나 next라는 이름으로 따로 생성하며, 각각의 문제를 다루는 topic 브랜치는 develop 브랜치에 merge한다.

Untitled

브랜치를 이용해 충분히 안정되었을 때 master브랜치로 병합하는 과정은 규모가 크고 복잡한 프로젝트일수록 매우 유용하다.

Topic 브랜치

토픽 브랜치는 프로젝트 크기에 상관 없이 유용하다. 어떤 한 가지 주제나 작업을 위해 만든 짧은 호흡의 브랜치 모음이기 때문이다. 테스트할 내용이나 처리할 이슈만 새로운 토픽 브랜치로 만든 다음, 해결 후 merge하면 된다.

Untitled

참고자료