Git

[Git] Git flow 전략

인생은단짠단짠 2022. 9. 16. 19:37

 

개발자들이 협업할 때 branch를 어떻게 활용하는지 공부하고 정리 해보았습니다.

 

Git flow

 

branching models 에는 git flow, github flow, gitlab flow가 있고, 개발 팀에서는 거의 git flow를 사용합니다.

 

github flow는 라이브러리 팀들이 많이 씁니다.

gitlab flow는 거의 사용하지 않습니다. (인프라팀 정도..?)

 

git flow strategy

 

큰 틀을 보면 develop 브랜치를 먼저 개발하고, relase를 거쳐서 main브랜치에 옮깁니다.

처음 개발팀에 들어가면 웬만하면 develop와 feature만 거의 왔다갔다 한다고 합니다.

 

main브랜치는 절대 commit을 직접적으로 하는 공간이 아닙니다. 

hoxfix는 예외인 긴급한 수정입니다. fix하고 main브랜치에 바로 붙입니다.

relaese주기가 거의 정해져 있습니다. (대부분 2주)

 

 

git flow 전략을 편하게 해주는 라이브러리가 있는데 git for windows에서 git을 다운 받았기 때문에 따로 설치할 필요가 없습니다!!

 

Git flow cycle 연습해보기

user git flow easly!!

 

Git flow 실습

 

이제 fizzbuzz를  Git flow 전략 통해  한번 구현해보며 익혀보겠습니다.

 

 

  1. 깃허브에 remote repo를 만듭니다.
  2. remote repo를 local에 clone합니다.
  3. 생성된 repo에 이동합니다. 
  4. .gitignore파일을 생성합니다. gitignore.io에서 복붙 후 저장합니다. 
  5. .gitignore파일을 add 및 commit (conf: Create .gitignore) 해줍니다. 
  6. 이 상태에서 git status -> working tree clean 을 확인하실 수 있습니다.
  7. 환경세팅들이 main브랜치에서 되어야 하니까, 환경세팅 후에 main에서 git flow init 을 해줍니다.
    • git flow init은 환경세팅 후, 프로젝트 셋업 전에 하는것이 좋다
  8. 이제 git flow init 을 해줍니다.
    1. 대괄호 안에 이름 채워져 있으면 계속 엔터치면 됩니다.
  9. 그 다음 git branch 를 해보면 develop 브랜치가 생성되어 있고, develop으로 이동되어 있습니다.
  10. 이제 기능을 만들어 보겠습니다.
    1. git flow feature start '기능이름(fizzbuzz)'    으로 기능 브랜치를 만듭니다.
    2. 마찬가지로, branch가 만들어짐과 동시에 그 branch로 이동을 합니다.
    3. touch fizzbuzz.py로 작업 파일을 만듭니다. 
    4. 작업파일을 add 및 commit( feat: Create fizzbuzz.py )을 진행합니다. [ 당연히 구현 단위를 쪼개서 커밋해야함 ]
    5. add와 commit의 반복을 통해 기능이 다 만들어지면, 이제 fizzbuzz브랜치에서 할 일이 없습니다.
    6. 그래서 git flow feature finish fizzbuzz 를 하면 이 브랜치를 develop으로 merge한다는 커밋이 뜹니다. 
    7. 그래서 현재 브랜치는 develop이 되고 fizzbuzz브랜치는 사라집니다.
  11. 이런 기능들을 계속 쌓고 release를 합니다.
    1. develop 브랜치에서 git flow release start 'release이름(버전이름을 많이 쓴다)' 로 release합니다.
    2. pipline동작시킬거있으면 시킵니다.
    3. 끝나면 git flow release finish v0.1 명령어를 입력합니다.
    4. 그러면 커밋메시지가 3번 뜹니다. 
      1. 처음 뜨는 것은 :wq 하면 됩니다.
      2. 두번째 뜨는 것은 tag입니다. 여기에 release note를 쓰면 됩니다. ( ex. Done initial version of fizzbuzz )
      3. 세번째 뜨는 것도 :wq하면 됩니다. 
    5. 커밋메시지를 다 처리하면 release 브랜치가 지워지고 develop 브랜치 위에 있게 됩니다.
  12. develop 브랜치 위에서 git push -u origin develop를 실행합니다. (-u는 최초실행시에만 붙여줍니다.)
  13. git switch main으로 main브랜치에 넘어와서 git push origin main을 실행합니다.
  14. git tag명령어로 tag를 확인하고 git push --tags 해줍니다.( 지금 발행되는 태그 다 push)
  15. 그리고 github로 가서 release note를 발행합니다. 
    1. tag를 눌러서 들어갑니다.
    2. Create release from tag 버튼을 클릭합니다. 
    3. Generate release note 버튼을 클릭합니다.
    4. 정식 버전 아니면 this is pre-release 선택해주고
    5. publish release버튼을 클릭합니다. 
  16. 이제 다시 develop로 이동해서 git flow feature start ~ 를 무한히 반복합니다..............

 

If,  feature브랜치로 만들다가 뭔가 잘못한 거 같아서 삭제하고 다시하고 싶을땐,

 

=> develop로 이동해서 (git switch develop) 

그 feature브랜치를 삭제하고 (git branch -D feature)

다시 feature start한다.

 

Git flow cheatsheet

git flow cheatsheet입니다. 

잘 기억 나지 않을 때, 들어가서 따라하시면 됩니다.

 

git-flow cheatsheet

 

danielkummer.github.io

 

 

 

이렇게 git flow전략에 대해 직접 실습을 통해 익혀보았습니다. 

 

 

'Git' 카테고리의 다른 글

[Git] 협업 연습  (0) 2022.09.17
[Git] Rename과 Revert  (0) 2022.09.16
[Git] Hexo를 통해 나만의 블로그 만들기  (0) 2022.09.16
[Git] Git의 기초 배우기  (0) 2022.09.15
[Git] 기본적인 linux 명령어 배우기  (0) 2022.09.15