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로 동기화

 

 

+ Recent posts