Git에다가 자료를 정리하다 보니 Git-Flow라는 개발 프로세스를 잘 반영하는 모델이 있다고 해서 알아보게 되었다
Git-Flow는 다음과 같은 대표적인 이미지가 있다
Git-flow에는 5가지 종류의 브랜치가 존재합니다. 항상 유지되는 메인 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)이 있습니다.
- master : 제품으로 출시될 수 있는 브랜치
- develop : 다음 출시 버전을 개발하는 브랜치
- feature : 기능을 개발하는 브랜치
- release : 이번 출시 버전을 준비하는 브랜치
- hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치
master : 제품 출시 코드
develop : master에서 파생된 브랜치.
feature : develop에서 작업하다가 기능 추가가 필요할 때 만드는 브랜치. feature작업이 끝나면 develop브랜치로 병합한다
release: 개발이 끝나서 배포할 때 저장하는 브랜치. 자잘한 것들은 releas에서 개발하고 develop에 틈틈히 병합한다. release에서 master브랜치로 병합한다. 이 때 Tag라는 기능을 통해서 master에 기록한다.
hotifx: master에서 파생된 브랜치로 버그가 발생 시 고치고 master과 develop브랜치로 병합시킨다!
코드
git init
깃을 시작시킵니다!
git remote add origin "깃허브 레파지토리주소"
깃을 레파지토리와 연결시킵니다
txt파일 혹은 아무파일이나 만든 후 git에 내용을 add하고 master 1이라고 커밋을합니다!
#txt 혹은 아무 파일이나 만든 후
git add .
git commit -m "master 1"
그러면 이제 master 브랜치는 만들었으니 개발을 위한 develop브랜치를 만들어야 합니다!
git checkout -b develop #(해당 브랜치가 존재하지 않는다면 브랜치를 새로 만들면서 바로 그 브랜치로 이동합니다.)
checkout -b 브랜치명 코드는 해당 브랜치가 존재하지않으면 브랜치를 만들면서 브랜치로 이동합니다!
git log --decorate --all --graph --oneline
해당 코드는 만들어진 브랜치와 커밋을 보여줍니다!!
위에서 만든 txt파일 등에 develop 2 와 같이 develop브랜치에 있다는 표시를 해주시고
git add .
git commit -m "develop 2"
git log --decorate --all --graph --oneline
develop 2 커밋을 해준 후 브랜치와 커밋을 확인합니다
이제는 feature 브랜치를 만들어야합니다(기능추가)
git checkout -b feature-login
만든 후 위와 같이 txt파일 등에 feature-login과 같이 적은 후
git add .
git commit -m "feature-login"
git log --decorate --all --graph --oneline
기능 추가가 끝나면 devloper에 병합 후 feature-login을 삭제해야한다
git checkout develop //develop브랜치로이동
git merge feature-login //develop브랜치로 feature-login병합
git branch -d feature-login //feature-login브랜치 삭제
이제 release브랜치를 만들어야한다
git checkout -b release-1.0
//txt에 release와 관련된 내용추가
git commit -am "release1.0 4"
release에 있는 내용을 develop랑 master에 넣어야 한다
git checkout master
git merge release-1.0 #master와 병합
git tag -a 1.0 -m "first release" master # tag로 기록함
git checkout develop
git merge release-1.0 #develop와 병합
긴급 수정 시에는 hotfix 브랜치에서 한다
git checkout -b hotfix-search
git commit -am "hotfix 5"
git checkout master
git merge hotfix-search
git tag -a 1.1 -m "hotfix search" master
git log --decorate --all --graph --oneline
핫픽스가 끝났음으로 master와 develop에 반영한다
추가한 태그 깃허브에 올리는 코드
git push origin --tags
깃허브에 올려서 쓸때의 주의할점:
- develop 브랜치와 feature브랜치의 푸시 풀 자주자주!!!!(merge시 오류 위험성)
- develop 변경된 사항을 계속 feature브랜치로 가져온다
- feature브랜치는 develop내용을 가지고 있고
- develop브랜치는 feature브랜치의 내용을 가지고 있지 않다가 feautre가 끝나면 develop로 merge를 통해 동기화한다!!!!
- 즉, feature는 계속 develop정보를 가져오고 develop는 feature가 끝나면 그 때 정보를 합친다!
- release는 바로바로 develop로 동기화