TIL 37. Git&Github - 브랜치 명령어와 Git flow 전략

문승준·2021년 10월 10일
0

Git & Github

목록 보기
3/3
post-custom-banner

브랜치 관리 기본 명령어

  • 브랜치 정보 확인
$ 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 (브랜치 이름)

  • 원격 저장소로 push 하기
$ git push <저장소명> <브랜치명>   # 해당 저장소에 해당 브랜치로 push

# 예시
$ git push origin main

  • 저장소명과 브랜치명 생략하고 push 하기
$ git push -u <저장소명> <브랜치명>  # 저장소명과 브랜치 페어링 해두기

# git push로 바로 적용
$ git commit -m "first-commit"
$ git push

  • 원격 저장소에서 pull 하기 (fetch+merge)
$ git pull origin <브랜치명>  # 해당 브랜치로 pull

  • 원격 저장소에서 clone 하기 (로컬에 아무것도 없을때 프로젝트 내려받기)
$ git clone <저장소 주소>

  • 몇가지 Tips
    동시에 두개의 브랜치를 켜 둘순없다.
    staging도 안하고 브랜치를 옮기면 그대로 다 따라온다.
    git은 디렉토리를 추적하진 않기 때문에 파일은 변경되도 폴더는 남아있다.

브랜치 전략 (Git flow)

  • 프로젝트를 시작할 때 ‘코드베이스’, ‘코드리뷰’, ‘배포방안’에 대해 논의한다.

  • Git은 가장 대표적인 코드베이스 도구이며 Git Branch 전략을 이해하고 프로젝트에 적용한다면 더 좋은 코드 활용과 유지보수가 가능하다.


브랜치 전략을 세울 때 고려할 점

  • Branch 별 권한 (Write, Read, Pull-Request)

  • Branch 생명주기 (짧게 유지하면서 명확하게)

  • Branch 을 통한 빠른 디버깅/스냅샷 확인

→ 모두 코드 품질 향상코드 가독성(검색) 향상을 목적으로한다.

  • 서비스/어플리케이션에서 버그가 발생하였을 때 해당 버전의 코드로 디버깅하여 원인을 찾고 상황 재현, 수정, 검증, 재배포까지의 단계를 체계적/안정적으로 처리할 수 있어야 한다.

  • 처음 Branch 전략을 수립하는 시점부터 ‘코드 품질, 코드 가독성(검색)’ 향상을 함꼐 목표로 설정한다.

Git flow 전략

  • 5가지의 브랜치를 이용하는 전략으로 주기적으로 배포하는 서비스에 적합.

  • 2개의 메인 브랜치, 3개의 보조 브랜치로 이루어진다. 여기서 보조 브랜치는 역할을 다하게 되면 삭제하는 게 원칙이다.

메인브랜치

  • master(main) : 실제 배포에 사용하는 브랜치

  • develop : 다음 버전을 개발하는 브랜치

보조 브랜치

  • feature : 기능 개발 브랜치 , 완료하면 develop에 mege한다. ( ex feature/comment_fe )

  • release : 이번 출시 버전 준비 브랜치 , develop 브랜치를 release 브랜치로 옮긴 후, QA, 테스트 진행하고 master에 merge한다.

  • hotfix : 배포된 서비스에서 발견된 버그 수정 브랜치 ( 버그 수정이 완료되면 master와 develop에 merge)

진행 과정

  1. develop 브랜치에서 기능을 개발하기 위한 feature 브랜치 생성

  2. 기능이 완성되면 develop 브랜치에 merge 후 feature 브랜치 삭제

  3. 이번 버전 기능이 모두 완료되면 QA(품질보증)을 위해 release 브랜치 생성

  4. 오류 발생시 수정. QA 완료 시, 해당 버전을 배포하기 위해 master 브랜치로 merge 후 release 브랜치 삭제(이 때 수정사항이 있다면 develop 브랜치에도 merge)

  5. master 브랜치에서 버그 발생 시, hotfix 브랜치 생성

  6. 오류를 수정하고 master와 develop 브랜치에 merge 후 hotfix 브랜치 삭제

profile
개발자가 될 팔자
post-custom-banner

0개의 댓글