Jason과 do-it-planner 팀업 프로젝트를 진행중인데, 현재까진 간략하게 develop브랜치와 개인 작업 브랜치 등 크게만 분류하여 초기 프로젝트 환경 구축을 진행했다.
현재는 모든 작업환경 및 프로젝트 초기 구축 작업이 완료됐고 각자 담당한 플래너의 초안 구현에 성공했다, 추가적으로 본격적으로 개발에 들어가기 앞서서 jason이 브랜치 전략을 간략하게 알려주고 공부할 것을 권장했다. 그리고 앞으로의 작업에선 feature 브랜치를 도입하기로 하였다.
브랜치 전략에 대해 더 잘, 자세히 이해하기 전까진 참조로 jason정리 + 그외 정리를 걸어둘 예정이다.
기능을 개발하는 브랜치
feature 브랜치는 새로운 기능 개발 및 버그 수정이 필요할 때마다 ‘develop’ 브랜치로부터 분기한다. feature 브랜치에서의 작업은 기본적으로 공유할 필요가 없기 때문에, 자신의 로컬 저장소에서 관리한다.
개발이 완료되면 ‘develop’ 브랜치로 병합(merge)하여 다른 사람들과 공유한다.
‘develop’ 브랜치에서 새로운 기능에 대한 feature 브랜치를 분기한다.
새로운 기능에 대한 작업 수행한다.
작업이 끝나면 ‘develop’ 브랜치로 병합(merge)한다.
더 이상 필요하지 않은 feature 브랜치는 삭제한다.
새로운 기능에 대한 ‘feature’ 브랜치를 중앙 원격 저장소에 올린다.(push)
feature 브랜치 이름 정하기
master, develop, release-(RB_), or hotfix- 제외
[feature/기능요약] 형식을 추천 EX) feature/login
feature 브랜치 생성 및 종료 과정
feature 브랜치(feature/login)를 'develop' 브랜치('master' 브랜치에서 따는 것이 아니다!)에서 분기
$ git checkout -b feature/login develop
새로운 기능에 대한 작업 수행...
feature 브랜치에서 모든 작업이 끝난 후, 'develop' 브랜치로 이동
$ git checkout develop
'develop' 브랜치에 feature/login 브랜치 내용을 병합(merge)한다.
(--no-ff 옵션: 아래에 추가 설명 )
$ git merge --no-ff feature/login
-d 옵션: feature/login에 해당하는 브랜치를 삭제한다.
$ git branch -d feature/login
'develop' 브랜치를 원격 중앙 저장소에 올린다.
$ git push origin develop
--no-ff 옵션
새로운 커밋 객체를 만들어 ‘develop’ 브랜치에 merge 한다.
이것은 ‘feature’ 브랜치에 존재하는 커밋 이력을 모두 합쳐서 하나의 새로운 커밋 객체를 만들어 ‘develop’ 브랜치로 병합(merge)하는 것이다.
https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html