$ git branch # 로컬 브랜치 보기
$ git branch -v # 로컬 브랜치 정보를 마지막 커밋 내역과 보기
$ git branch -r # 리모트 저장소의 브랜치 보기
$ git brach -a # 로컬/리모트 저장소의 모든 브랜치 보기
$ git branch <브랜치이름> # 브랜치 생성
$ git checkout <브랜치이름> # 해당 브랜치로 이동
$ git checkout -b <브랜치이름> # 생성과 동시에 해당 브랜치로 이동
$ git checkout -t origin/work2 # 리모트에 있는 브랜치 가져오기
$ git branch -M main # default master를 main으로 이름바꾸기
$ git branch -m <원래이름> <새이름> # 브랜치 이름바꾸기
$ git checkout master # 다른 브랜치로 이동하기
$ git branch -d (브랜치 이름) # 브랜치 삭제하기
$ git push origin -d (브랜치 이름)
$ git push <저장소명> <브랜치명> # 해당 저장소에 해당 브랜치로 push
# 예시
$ git push origin main
$ git push -u <저장소명> <브랜치명> # 저장소명과 브랜치 페어링 해두기
# git push로 바로 적용
$ git commit -m "first-commit"
$ git push
$ git pull origin <브랜치명> # 해당 브랜치로 pull
$ git clone <저장소 주소>
- 몇가지 Tips
동시에 두개의 브랜치를 켜 둘순없다.
staging도 안하고 브랜치를 옮기면 그대로 다 따라온다.
git은 디렉토리를 추적하진 않기 때문에 파일은 변경되도 폴더는 남아있다.
프로젝트를 시작할 때 ‘코드베이스’, ‘코드리뷰’, ‘배포방안’에 대해 논의한다.
Git은 가장 대표적인 코드베이스 도구이며 Git Branch 전략을 이해하고 프로젝트에 적용한다면 더 좋은 코드 활용과 유지보수가 가능하다.
Branch 별 권한 (Write, Read, Pull-Request)
Branch 생명주기 (짧게 유지하면서 명확하게)
Branch 을 통한 빠른 디버깅/스냅샷 확인
→ 모두 코드 품질 향상
, 코드 가독성(검색) 향상
을 목적으로한다.
서비스/어플리케이션에서 버그가 발생하였을 때 해당 버전의 코드로 디버깅하여 원인을 찾고 상황 재현, 수정, 검증, 재배포까지의 단계를 체계적/안정적으로 처리할 수 있어야 한다.
처음 Branch 전략을 수립하는 시점부터 ‘코드 품질, 코드 가독성(검색)’ 향상을 함꼐 목표로 설정한다.
5가지의 브랜치를 이용하는 전략으로 주기적으로 배포하는 서비스에 적합.
2개의 메인 브랜치, 3개의 보조 브랜치로 이루어진다. 여기서 보조 브랜치는 역할을 다하게 되면 삭제하는 게 원칙이다.
master(main)
: 실제 배포에 사용하는 브랜치
develop
: 다음 버전을 개발하는 브랜치
feature
: 기능 개발 브랜치 , 완료하면 develop에 mege한다. ( ex feature/comment_fe )
release
: 이번 출시 버전 준비 브랜치 , develop 브랜치를 release 브랜치로 옮긴 후, QA, 테스트 진행하고 master에 merge한다.
hotfix
: 배포된 서비스에서 발견된 버그 수정 브랜치 ( 버그 수정이 완료되면 master와 develop에 merge)
develop 브랜치에서 기능을 개발하기 위한 feature 브랜치 생성
기능이 완성되면 develop 브랜치에 merge 후 feature 브랜치 삭제
이번 버전 기능이 모두 완료되면 QA(품질보증)을 위해 release 브랜치 생성
오류 발생시 수정. QA 완료 시, 해당 버전을 배포하기 위해 master 브랜치로 merge 후 release 브랜치 삭제(이 때 수정사항이 있다면 develop 브랜치에도 merge)
master 브랜치에서 버그 발생 시, hotfix 브랜치 생성
오류를 수정하고 master와 develop 브랜치에 merge 후 hotfix 브랜치 삭제