CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·방탄소년당 ·MaClien ·일본산당 ·자전거당 ·개발한당 ·이륜차당 ·AI당 ·바다건너당 ·노젓는당 ·클다방 ·소셜게임한당 ·물고기당 ·안드로메당 ·콘솔한당 ·소시당 ·갖고다닌당 ·찰칵찍당 ·걸그룹당 ·ADHD당 ·VR당 ·창업한당 ·나혼자산당 ·가상화폐당 ·골프당 ·여행을떠난당 ·방송한당 ·냐옹이당 ·레고당 ·나스당 ·캠핑간당 ·개판이당 ·e북본당 ·3D메이킹 ·X세대당 ·AI그림당 ·날아간당 ·사과시계당 ·육아당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·동숲한당 ·날아올랑 ·전기자전거당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·IoT당 ·KARA당 ·키보드당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·PC튜닝한당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

개발한당

자유 Git Flow 에 대한 주관적인 의견 10

11
2019-06-20 18:03:51 수정일 : 2019-06-21 09:13:49 61.♡.228.160
리프

잘못된 형식의 이미지 링크입니다.


아래 내용은 제가 개발하면서 느낀 주관이 포함되어 있으니 절대적으로 신뢰하기 보단 이런식으로 사용하기도 하는구나 라고 보고 넘어가 주시면 됩니다.

혹시나 제가 잘못 알고 있던부분이 있더라면 과감하게 지적해 주심면 감사합니다.


1. Git Flow 란 무엇인가?

- Git Flow 는 Git Branch 전략 중에 하나

  (Github Flow, GitLab Flow 등.. 그 외 자신만의 기준으로 Git Branch 를 사용한다면 그것이 당신의 Branch 전략이 됩니다)


2. Git Flow 가 어떻게 사용하는데?

  - 사용하는 방법을 설명하기에 앞서, 기본적인 전제조건이 몇개 있습니다.

    1. Commit 을 최대한 자주 한다

        비록 로그가 길어지겠지만, 나중에 특정 상황에 도달했을 때 "왜 나눠서 Commit 하지 않았지?" 라고 후회할 수 있습니다

        (예를들면 기능 5개를 한번에 Commit 했는데, 그중 1,2개만 반영하고 나머지는 폐기해야 할 경우)

        러프하게 하더라도 최대 1개 기능에 1개 Commit 이 되어야 합니다. (2개 이상의 기능수정을 1개의 Commit 에 걸쳐서 하지 마세요)


    2. Push 는 항상 동작되는 코드여야 한다.

        코드가 Push 된 순간부터 다른 누군가가 Pull 할 수 있기 때문에, 동작되지 않는 코드가 Pull 되는 순간 동료들의 모든 코드가 당신의 코드 수정만들 기다리며 Stop 됩니다


  - Branch 설명

    - Master : 배포용 Code, 상용 배포 버전입니다.

    - Develop : 개발용 Code, Master 에 Merge 되기 전에 기능들을 합산하여 최종적으로 테스트 하는 버전입니다

    - Feature : 기능 개발용 Code, Develop 에서 분기된 Branch 로 기능 하나당 하나의 브랜치로 구성된다

    - Hotfix :긴급 수정용 Code, Master 에서 분기된 Branch 로 급한 코드 수정이 필요할때 사용됩니다.

    - Release : 버그 수정용 Code, Develop 에서 분기된 Branch 로 오로지 배포 전 버그 수정용으로 사용됩니다.


  - 예시를 통한 사용법 상세 설명

    - 만약 당신이 모든 코드 수정을 Master 에서만 하고있다면 먼저 코드 안정화부터 진행합니다.


    - 코드 안정화가 끝났다면 Develop Branch 를 새로 만듭니다


    - 당신이 작업해야할 기능을 나눕니다

      (로그인 화면을 수정하고, 유저정보 화면을 추가하고, 광고들을 삭제해야 한다)


    - Develop Branch 에서 분기된 3개의 Feature Branch 를 만든다

      (feature/login-fix, feature/user-info. feature/delete-ad)


    - 각 Feature Branch 에서는 작업할 기능만 온전히 작성한다.

      그리고 각 Branch 간 코드들은 Build 에 이상이 없는 상태

      (그 결과 feature/login-fix 에서는 유저화면이 없고, 광고가 남아있다)


    - 이 중 반영되어야 할 기능들이 선별된다 (고객요구사항 등)


    - Develop 으로 선별된 기능들이 Merge 된다


    - Merge 완료 후 Develop Code 테스트


    - 이때 버그 발생시 Release Branch 로 버그 수정

      (Release 는 Develop 으로 병합)

    - 내용 수정

      develop 이 일단 정상적으로 빌드되어서 돌아가면 develop 에서 release 브랜치를 만듭니다.


    - release 에서 계속 테스트를 진행하면서 고객사에 넘길 준비를 합니다. 그러다가 테스트하던 release 브랜치에서 버그 발생시 Release Branch 에서 버그 수정후 곧바로 release 와 develop 두 브랜치 모두에 커밋합니다. 이걸 계속 반복해줍니다.


    - 이제 release 브랜치 에서 모든 테스트가 끝난후라면, 비로소 Release 브랜치를 닫고 develop과 master 로 이 결과를 merge 해줍니다.


    - 그리고 난뒤 master 에는 버전 번호 태그를 달고 이걸 고객에게 배포하는거죠.


    - 시간이 지나서 고객사에서 버그리포트가 오면 이걸 master 에서 hotfix 브랜치를 만들어 고친후 다시 master와 develop 브랜치로 merge 하고, master에는 새로운 버전 번호 태그를 붙입니다.


    - 이렇게 새로운 버전 번호 태그를 단 커밋이 다시 고객사에 전해집니다.

   

    - 모든 버그 수정되고 배포 확정되면 Develop 을 Master 로 Merge


    - Master Merge 이후 버그 발생했다면 Hotfix Branch 로 버그 수정


    - 기존 Feature Branch 는 필요하다면 Master 혹은 Develop 의 Code 를 Merge 한다

      (Merge 를 하든 안하든 문제가 없어야 한다)


    - 각 Branch 간 코드 교환이 필요하다면 Cherry pick 으로 필요한 코드만 가져온다


퇴근시간이라 그만 쓰겠습니다!

리프 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [10]
야근의요정
IP 121.♡.67.72
06-20 2019-06-20 18:28:40
·
일단 추천드세요!!!! 감사합니다.
팝이좋아
IP 61.♡.90.2
06-20 2019-06-20 18:48:16
·
와..... 완전 꿀팁이네요. 감사합니다.
드림위버
IP 211.♡.171.230
06-20 2019-06-20 20:24:13
·
와 대박 꿀팁 감사합니다!
kleinstein
IP 176.♡.200.5
06-21 2019-06-21 00:13:56
·
글 쓰신 부분에서 제가 이해한 것과 조금 다른부분이 있어서 남깁니다.
..
..

- Merge 완료 후 Develop Code 테스트

-------------------> develop 이 일단 정상적으로 빌드되어서 돌아가면 develop 에서 release 브랜치를 만듭니다.

- release 에서 계속 테스트를 진행하면서 고객사에 넘길 준비를 합니다. 그러다가 테스트하던 release 브랜치에서 버그 발생시 Release Branch 에서 버그 수정후 곧바로 release 와 develop 두 브랜치 모두에 커밋합니다. 이걸 계속 반복해줍니다.

- 이제 release 브랜치 에서 모든 테스트가 끝난후라면, 비로소 Release 브랜치를 닫고 develop과 master 로 이 결과를 merge 해줍니다.

- 그리고 난뒤 master 에는 버전 번호 태그를 달고 이걸 고객에게 배포하는거죠.

- 시간이 지나서 고객사에서 버그리포트가 오면 이걸 master 에서 hotfix 브랜치를 만들어 고친후 다시 master와 develop 브랜치로 merge 하고, master에는 새로운 버전 번호 태그를 붙입니다.

- 이렇게 새로운 버전 번호 태그를 단 커밋이 다시 고객사에 전해집니다.


이상입니다. 참고하세요~
리프
IP 61.♡.228.160
06-21 2019-06-21 09:03:25
·
맞습니다. 제가 잘못 작성했습니다. 본문 수정하겠습니다.
BlaCk
IP 220.♡.38.196
06-21 2019-06-21 02:51:19 / 수정일: 2019-06-21 03:04:03
·
저 같은 경우 위의 브랜치 구조가 직관적이지 않더라고요..

그래서 위 그림처럼 살짝 변형했습니다.
큰 줄기 dev-stage-master로 나누어놓고,
feature-bug-hotfix 브랜치를 운용하는 방식으로 사용합니다.

소규모 플젝은 dev-master만 운영하고,
커밋 메세지에 "Add: Fix: Doc: Feature:"(각각 추가, 수정, 문서, 마일드스톤)로 의미를 나타내줍니다.
리프
IP 61.♡.228.160
06-21 2019-06-21 09:14:30
·
자기한테 맞는 Flow 로 하는게 좋습니다
쌀집아저씨
IP 211.♡.135.145
06-30 2019-06-30 10:15:46
·
BlaCk님// 저도 이렇게 운영중입니다.
/Vollago
BlaCk
IP 220.♡.38.196
06-30 2019-06-30 14:54:42
·
@쌀집아저씨님 저랑 같은 생각 가진분을 만나니 반갑네요 ^.~
삭제 되었습니다.
컴공의자랑
IP 211.♡.219.126
07-05 2019-07-05 00:32:28
·
이번에 동시에 두가지 기능을 구현하며 진행해야 할 일이 있었는데, 그럼 브랜치 체크아웃 계속 해가며 수정하는 방법 외엔 없을까요?
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.