<aside> 💡 모든 브랜치 작업은 Git Flow 를 사용하여 관리합니다.
</aside>
팀이 브랜치를 더욱 효율적으로 관리하기 위한 Git 설치에 포함된 도구입니다. (오래된 버전의 경우 별도로 Git Flow 를 설치 해야 합니다.)
모든 git flow 프로세스에는 start, finish 가 존재하며 브랜치를 생성하고 끝날때 타겟 브랜치에 커밋되며 원격 브랜치가 삭제됩니다. 따라서 로컬 브랜치는 알아서 지워주셔야 합니다.
명령어 ( 기호는 무시하고 써주세요 )
// 기능 브랜치 생성 (각 기능을 시작할때 사용, **git pull 적용 후 사용 필수**)
// 브랜치명 뒤에 브랜치를 생성할 타겟이 되는 브랜치를 지정합니다. (생략시 현재 브랜치 타겟)
git flow feature start <branchName> <baseBranch>
// 기능 브랜치 완료 (원격 브랜치 삭제되며 <baseBranch> 에 코드가 커밋됩니다.)
// 완료할 브랜치에 checkout 되어 있으면 브랜치명 생략이 가능합니다.
git flow feature finish <branchName>
// 배포 브랜치 생성
git flow release start <branchName> <baseBranch>
// 배포 브랜치 적용 (**develop, main 브랜치 모두에 커밋됩니다.**)
git flow release finish <branchName>
// 핫픽스 브랜치 생성
git flow hotfix start <branchName> <baseBranch>
// 핫픽스 브랜치 적용
git flow hotfix finish <branchName>
작업 순서
준비
생성 및 작업
git rebase -i develop -i 는 사용자가 rebase 할 커밋목록을 편집할수 있는 대화창을 보여주는데, pick, squash 명령을 편집하여 적용이 가능합니다.git push --force 명령어를 통해 git 서버의 history 를 새로 덮어씌워 정리해야 합니다. 그렇지 않으면 git 이 경고를 할 것입니다. (pull 하라고 닦달함..)완료
명령어로 보는 git flow feature 작업 과정
// 시작 브랜치 : develop
git pull // 브랜치 최신화
git flow feature start test_feature
/* ... 작업중 */
git add .
git commit -m "feature test finish!!!"
git switch develop
git pull
git switch feature/test_feature
git rebase -i develop // 모두 squash 한다고 가정
/* 리베이스 중... */
// ...충돌 수정중...
git rebase --continue // 계속 리베이스 진행
/* 리베이스 완료 */
git push --force // commit history 덮어 씌워 최신화
git flow feature finish
/* feature upstream branch 삭제 및 타겟 브랜치에 코드 commit */
git push
// 기능 반영 완료