danbibibi
article thumbnail
Published 2023. 9. 1. 14:31
[Git] 3. Git branch DevOps

branch 란?

  • 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능
  • 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경 가능
  • 다른 브랜치와 병합함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있음

 

새 브랜치 생성하기

$ git branch <branchname>

$ git branch # branch 목록 확인
$ git branch -m new # 현재 branch 이름 변경
$ git branch -m old new # branch 이름 변경
$ git branch --merged # 현재 Checkout 한 브랜치에 Merge 된 브랜치
$ git branch --no-merged # 현재 Checkout 한 브랜치에 Merge 하지 않은 브랜치

 

브랜치 전환하기

$ git checkout <branch>

# 브랜치 작성과 체크아웃을 한번에 실행
$ git checkout -b <branch>

# checkout을 co로 사용
$ git config --global alias.co checkout

 

브랜치 병합하기

$ git merge <branchname>
conflict 발생 시 확인 후 수정하여 다시 add, commit

 

브랜치 삭제하기

$ git branch -d <branchname>
$ git branch -D <branchname> # 합치지 않았지만, 강제 삭제하는 경우

브랜치를 merge하지 않고 삭제하기를 원하는 경우

 

rebase

  • 하나의 브랜치가 다른 브랜치에서 파생되서 나온 경우, 다른 브랜치에서 진행된 커밋을 다시 가져와서 base를 재설정하는 것
  • 커밋 히스토리를 간결하게 유지할 수 있음
  • 많은 사람과 공동 작업하는 경우 권장하지 않음
#  master를 base삼아 Rebase
$ git checkout experiment 
$ git rebase master

# master브랜치를 Fast-forward
$ git checkout master
$ git merge experiment

 

rebase 전
rebase 후

feature브랜치에서 a3 커밋을 베이스로 작업을 진행하고 있고, master 브랜치는 이미 상당부분 진행되었음
최신 master 브랜치의 작업 내용을 현재 작업 중인 feature 브랜치에도 적용하고 싶을 때 Rebase 명령어를 사용!!

 

Git Flow

Main

  • 출시 가능한 프로덕션 코드를 모아두는 브랜치
  • 프로젝트 시작 시 생성되며, 개발 프로세스 전반에 걸쳐 유지
  • 배포된 각 버전을 Tag를 이용해 표시해 둠

 

Develop

  • 다음 버전 개발을 위한 코드를 모아두는 브랜치
  • 개발이 완료되면, Main 브랜치로 merge 됨

 

Feature

  • 하나의 기능을 개발하기 위한 브랜치
  • Develop 브랜치에서 생성하며, 기능 개발이 완료되면 Develop 브랜치로 merge 됨
  • merge 시에는 Fast-Forward로 머지하지 않고, merge commit을 생성하며 merge 해야 함
  • 네이밍 : feature/branch-name

 

Release

  • 소프트웨어 배포를 준비하기 위한 브랜치
  • Develop 브랜치에서 생성하며, 버전 이름 등의 소소한 데이터를 수정하거나 배포 전 사소한 버그를 수정하기 위해 사용
  • 배포 준비가 완료되었다면 Main과 Develop 브랜치에 둘 다 merge 함 (Main 브랜치에는 태그를 이용하여 버전을 표시)
  • Release 브랜치를 별도로 사용함으로써, 배포 업무와 관련없는 팀은 병렬적으로 Feature 브랜치에서 기능 개발 가능
  • 네이밍 : ex) release/v1.1

 

Hotfix

  • 이미 배포된 버전에 문제가 발생했을 경우, 문제 해결을 위해 사용하는 브랜치
  • Main 브랜치에서 생성하며, 문제 해결이 완료되면 Main과 Develop 브랜치에 모두 merge 함
  • Hotfix 브랜치를 별도로 사용함으로써, hotfix 업무와 관련없는 팀은 병렬적으로 기능 개발 가능
  • 네이밍 : ex) hotfix/v1.0.1

'DevOps' 카테고리의 다른 글

CI/CD(지속적 통합/배포) 정리  (0) 2024.02.28
[Git] cherry-pick  (0) 2023.12.01
[Git] 커밋 메시지 템플릿 설정  (0) 2023.11.30
[Git] 2. Git 기초  (0) 2023.08.09
[Git] 1. 시작하기  (0) 2023.07.24
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로