[Git] Branch 관련 내용 & 명령어

[Git] Branch

Branch 는 독립적으로 작업을 진행하기 위해 만들어지는 공간입니다.

각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다.

기본적으로 초기 Repository 는 main or master branch 로 시작됩니다.

Git 명령어

  • Branch 생성 : name 이라는 branch를 생성합니다. (해당 브랜치로 이동하지는 않습니다.)

    $ git branch <name>
  • 다른 Branch로 이동 : name 이라는 branch로 이동합니다.

    $ git checkout <name>
  • Branch 생성 + 이동 : name 이라는 branch를 생성하고 이동합니다.

    $ git checkout -b <name>
  • 로컬에 생성한 branch 를 remote repository (origin)에 push : name 이라는 branch를 로컬에 생성한 상태에서 origin 에 push합니다.

    $ git push --set-upstream origin <name>

    기본적으로 git push 명령어를 입력하지 않으면 생성한 Branch는 로컬에만 존재하는 상태가 됩니다.

    위의 방법으로 한번 push 한 뒤로는 remote repository 에도 존재하게 되며 이후에 push 할 때 --set-upstream 을 붙여주지 않아도 됩니다.

  • remote repository에 저장된 branch 삭제 : name 이라는 branch를 remote repository 에서 삭제합니다.

    $ git push origin --delete <name>
  • name branch > main branch 병합(merge)

    $ git checkout main
    $ git merge <name>
    $ git branch -d <name>
    $ git push origin <name>

    병합에서 --no-ff 옵션

    • 병합하는 하위 branch의 commit 이력들을 모두 합쳐서 새로운 commit 객체를 만들어 상위 branch로 병합하는 옵션입니다.

Develop/Release Flow with Branches

Gitflow Workflow 에서 여러개의 branch를 이용해서 develop/release 를 진행하는 Flow 입니다.

Git Branch의 종류

Main Branches : master, develop

  • Master Branch : 배포 (Release) 이력을 관리하는 뿌리 (Trunk) Branch 입니다.

    배포된 버전들 중 최종 버전이 관리됩니다. 즉, 배포 가능한 상태만을 관리하는 브랜치입니다.

  • Develop Branch : 개발 (Develop) 이력을 관리하는 Branch입니다.

    Release로부터 분기되어 만들어지며, 버그와 테스트가 완료되면 Release로 병합되어 최종적으로 Master로 병합됩니다.

Sub Branches : feature, release, hotfix

  • Feature Branch : 기능 개발 Branch

    새로운 기능을 개발하거나 버그 수정이 필요할 때 Develop Branch로부터 분기되어 만들어지며, 개발이 완료되면 Develop Branch로 병합합니다.

    이름은 통상적으로 feature/기능요약 으로 사용합니다.

  • Release Branch : 출시 버전 Branch

    배포를 진행하는 Branch 입니다.

    • Release Branch 생성과 동시에 배포 사이클이 시작됩니다.
    • 버그 수정, 문서 추가 등 배포에 필요한 작업을 진행합니다.
    • 배포 전 버그 확인, 테스트 등 모든 작업이 완료되면 master Branch 로 병합합니다. (commit 에 버전 tag를 부여하여 관리합니다.)
    • 혹시나 Master Branch와 Develop Branch 간의 차이가 생겨 다음 개발이 잘못 진행될 수 있으니 배포, 병합이 완료된 후에는 Main Branch들을 동기화시켜 줍니다.
  • Hotfix Branch : 긴급 버그 수정 Branch

    긴급하게 버그를 수정하기 위해 사용합니다. develop 에서 기존 개발 flow 대로 처리를 하면 너무 늦어지기 때문에 바로 master 에서 분기하여 수정한 후 병합하여 배포합니다. Release 와 마찬가지로 master 에 병합한 후에 develop 에도 병합하여 동기화를 해줍니다.

'SW > Git' 카테고리의 다른 글

[Git] Basic  (0) 2021.06.08