본문 바로가기

기타/Git

Git Flow 팀 단위 관리 방법

Git Flow 관리법

팀 단위
깃 관리를
어떻게 해야할까?

 

 안녕하세요. 오랜만에 돌아온 앱개발지식나눔입니다. 오늘은 2인 이상 프로젝트에서 Git을 어떻게 관리하면 좋을지에 대해서 알아보도록 하겠습니다. 제 회사는 깃랩을 사용하기 때문에 Git, GitLab을 통해 깃 플로우를 기준으로 관리하는 방법을 설명하겠습니다. 깃헙같은 경우도 크게 다르지 않기 때문에 이 글을 읽으면서 '이 부분은 이렇게 바꾸면 되겠군!'이라고 생각이 드실겁니다.

 

 이 글은 처음 프로젝트를 이끄는 팀 리더, 혹은 개발자를 대상으로 하는 글이므로 매우 상세하게 설명할 예정입니다. 아마 협업을 어느정도 진행한 분들은 대부분 아는 내용일 것이라고 생각합니다.

 

 제일 처음 팀 리더가 해야할 것은 팀 전용 깃헙 혹은 깃랩 아이디를 만드는 것입니다. 그리고 팀원들을 해당 계정으로 초대합니다. 인텔리제 기준으로 상단 탭 위에 Git으로 들어가서 해당 계정을 연결합니다. (최근 깃헙은 아이디, 비번으로 연결되지 않습니다. 토큰 발급으로만 연결됩니다.

 

 

 

 

 

 

 모든 팀원들이 해당 계정과 remote 되었으면 팀 리더가 터미널에 git branch -u develop를 입력하여 main(혹은 master) 브랜치로부터 분기를 태웁니다.

 

 팀원들은 git remote update를 통해 새로운 branch를 업데이트하고 git checkout develop을 통해 main 브랜치에서 develop 브랜치로 이동합니다. 

 

 여기서부터 이제 새로운 UI 혹은 새로운 기능을 작성하기 위해 각각 기능 혹은 화면별로 브랜치를 만듭니다. ([현재 develop 브랜치] ex: git branch -u feature-001-login-main-page  -> git checkout feature-001-login-main-page -> 새로운 작업 진행)

 

 개별 작업이 끝난 후 git add . -> git commit -m "메세지" -> git push 혹은 git push origin feature-001-login-main-page를 통해 feature-001-login-main-page 브랜치 원격 저장소에 새로운 코드를 저장합니다.

 

 그 후 git checkout develop을 통해 다시 develop 브랜치로 이동합니다.

 

 마지막으로 git merge feature-001-login-main-pagegit pull origin develop을 합니다. 그리고 충돌난 지점을 해결 후 다시 git push origin develop으로 원격 저장소에 저장합니다.

 

 

 

 

 

 

정리하면 아래와 같은 순서로 이루어집니다.

 

1. (팀 리더) git branch -u develop
2. (공통) git remote update
3. (공통) git checkout develop
4. (팀원 각자) git branch -u feature-001-login-main-view 혹은 git branch feature-001-login-main-view 
5. (팀원 각자) git checkout feature-001-login-main-view
6. (팀원 각자 작업 후) git add . 혹은 git add <파일 이름>
7. git commit -m "[feature] 로그인 메인 화면 #001"
8. git push 혹은 git push origin  feature-001-login-main-view
9. git checkout develop
10. git pull 혹은 git pull origin develop
11. git merge feature-001-login-main-view
12. git pull
13. (만약 충돌나면 해결 후) git pull -> git remote remove feature-001-login-main-view

 

 팀원들은 새로운 기능 및 화면이 추가될때마다 4번부터 13번 프로세스를 반복하면 되겠습니다. 처음은 까다롭고 복잡하더라도 하다보면 금방 습관으로 자리잡습니다. 이 Git Flow가 중요한 이유는 크게 두 가지가 있습니다. 하나는 여러 사람이 작업하다가 한 명이 버그를 냈을때 찾기가 쉽다는 점이고 다른 하나는 버그난 지점을 찾아 분리하기 용이하다는 점입니다.(만약 브랜치 한 개에 여러 사람이 버그가 있는지 모르고 일주일 넘게 작업하다가 뒤늦게 발견했다면? revert를 시켰을 때 다른 사람들의 일주일치 파일은 어떻게 관리할까요?) 팀원 모두가 이 룰을 지켜서 작업하여 좋은 성과물을 만드시길 바라겠습니다. 다음 시간에는 깃랩에서 해당 명령어를 인터페이스적으로 쉽게 사용할 수 있는 방법에 대해서 알아보도록 하겠습니다.