git flow 란

사전 준비

- master : 메인 브랜치 -> deploy용 -> 실제 프로젝트 배포 시 사용

- develop : 실제 base branch. 새로운 기능 구현을 할 경우 해당 브랜치에서 feature 브랜치를 파생할 것

- feature/[구현할 기능] : 기능을 개발할 branch. 기능 구현 후 바로 develop에 머지하지 않고, pull request 를 develop으로 날려줄 것

실행 예시

<aside> 💡 예제를 실행하면서 가장 헷갈릴 것으로 예상되는 개념은 로컬 브랜치와 리모트 브랜치의 구별입니다(로컬에도 develop 브랜치가 있고 깃허브에도 develop 브랜치가 있고 이게 똑같은 건지 다른건지…). 로컬 브랜치는 내 컴퓨터에 있는 브랜치이고, 리모트 브랜치는 깃허브 상에 존재하는 브랜치입니다. 둘은 엄연히 다르지만 사실 깃 플로우를 진행함에 있어서 일단은 크게 신경쓰지 않아도 됩니다. 우선은 그냥 위에 언급한 두 develop 은 같은 브랜치다.. 라고 가볍게 이해하고 넘어가도 무방합니다.

</aside>

<aside> 💡 해당 진행 과정에서는 병합 충돌(merge conflict)이 나는 경우는 다루지 않았습니다.

</aside>

  1. 맨 처음 깃허브에서 레포지토리를 생성하면 master 브랜치에 프로젝트가 세팅됩니다.

    Untitled

    Untitled

  2. 최초에 팀원 중 누군가가 master 브랜치에서 뻗어나온 develop 브랜치를 생성해놓을 겁니다. 브랜치는 항상 어떤 브랜치에서 다른 브랜치가 파생되어 생성된다는 개념이며 마치 나무의 줄기에서 여러 가지들이 뻗어나가는 것과 같은 느낌입니다. 여기서는 직접 깃허브에서 develop 브랜치를 생성해주세요. 그리고 클론 받아 작업을 진행하면 됩니다.

    Untitled

    Untitled

  3. 저에게 readme 파일을 수정하라는 작업이 주어졌습니다. 이제 로컬에서 해당 기능에 대한 브랜치를 파서 readme 파일을 수정하고 이를 develop 브랜치에 합치는 과정을 진행할 겁니다.

  4. 먼저 develop 브랜치에서 새로 작업할 브랜치를 팝니다. 이름은 보통 feature/진행할기능이름 으로 짓습니다. 아래 명령어를 실행하면 develop 브랜치에서 feature/update-readme 브랜치가 파생되어 생성되고 이 브랜치로 이동까지 마치게 됩니다.

    Untitled

    // 현재 브랜치에서 새로 브랜치를 생성하고 새로운 브랜치로 이동하는 명령어 
    git checkout -b '브랜치명'
    

    Untitled

  5. 이제 작업을 진행하면 됩니다. readme 파일을 직접 수정한 뒤 변화를 확인해보겠습니다. status 명령어를 통해 파일의 변화를 확인할 수 있습니다.

    Untitled

  6. 작업이 끝나면 커밋 후 깃허브에 해당 브랜치를 올려봅니다.

    Untitled

    git add .
    git commit -m "commit messages"
    git push origin 'new_branch'
    
  7. 정상적으로 푸쉬가 됐다면 레포지토리의 Pull requests 탭의 화면 상에 다음과 같은 화면이 뜰겁니다. 그러면 Compare & pull request 버튼을 눌러봅니다.

    Untitled