티스토리 뷰

Programming/Git

git-flow-practice

BaeMinCheon 2018. 12. 25. 18:36

git-flow-practice

  • git-flow 를 실제로 적용하는 과정을 예제로 정리하는 글입니다
  • 이 글에서 다루는 git-flow 는 다음의 브랜치들을 사용합니다
    • master
    • develop
    • feature
    • release
  • 사용한 환경
    • Windows 10
    • git bash
  • 사용한 저장소 주소

Step #1

  • 저장소를 준비합니다

방법 #1

  • 시스템 내에서 로컬 저장소를 만들기
  • ex) 로컬 저장소로 만들 디렉터리 내에서 git init



방법 #2

  • github 또는 gitlab 등의 호스팅 서비스에서 원격 저장소를 생성한 뒤 시스템으로 가져옵니다
  • ex) 원격 저장소를 원하는 디렉터리로 git clone
  • 준비된 저장소는 비어있다고 간주합니다
    • .git 폴더만 존재하는 상태임을 의미한다

Step #2

  • 임의의 파일을 만듭니다

방법

  • 각 브랜치에서의 작업 내용을 작성하기 위한 파일을 준비합니다
  • ex) touch README.markdown
  • 해당 변경사항을 반영합니다

방법

  • 변경사항을 스테이지에 올리고 로컬 저장소에 커밋합니다
  • ex) git add . + git commit -m "initial commit"

Step #3

  • develop 브랜치를 만듭니다

방법

  • develop 이라는 이름의 브랜치를 만듭니다
  • 만들어지는 순간의 HEAD 를 가리키는 브랜치가 생성됩니다
  • ex) git branch develop
  • develop 브랜치로 전환합니다

방법

  • develop 이라는 이름의 브랜치로 전환합니다
  • ex) git checkout develop

Step #4

  • feature 브랜치를 만듭니다

방법

  • feature/some-task 라는 이름의 브랜치를 만듭니다
  • 브랜치 이름의 some-task 는 해당 브랜치에서 하고자 하는 작업에 따라 결정합니다
  • ex) git branch feature/some-task
  • feature 브랜치로 전환합니다

방법

  • feature/some-task 라는 이름의 브랜치로 전환합니다
  • ex) git checkout feature/some-task

Step #5

  • feature 브랜치에서의 작업을 수행합니다


방법

  • 임의의 파일을 수정하여 feature 브랜치 작업 수행을 대표합니다
  • ex) vi README.markdown + i + ### feature/some-task + Esc + :wq
  • 해당 변경사항을 반영합니다

방법

  • 변경사항을 스테이지에 올리고 로컬 저장소에 커밋합니다
  • ex) git add . + git commit -m "implement some-task"

Step #6

  • develop 브랜치로 전환합니다

방법

  • develop 이라는 이름의 브랜치로 전환합니다
  • ex) git checkout develop
  • feature 브랜치를 develop 브랜치로 병합합니다

방법

  • 병합을 하는 쪽에서 merge 를 사용해 병합을 당하는 쪽을 명시합니다
  • --no-ff 옵션은 브랜치 그래프에서의 시각화를 위해 사용합니다 ( fast-forward 방지 기능 )
  • ex) git merge --no-ff feature/some-task
  • 병합 메시지를 작성합니다

방법

  • 기본 문구가 이미 작성되어있으며, 원하는 메시지로 변경할 수도 있습니다
  • 여기에서는 기본 문구를 그대로 사용합니다
  • ex) Esc + :wq

Step #7

  • Step #4 ~ 6 에서의 작업을 반복합니다

Step #8

  • release 브랜치를 만듭니다

방법

  • release/1.0.0 라는 이름의 브랜치를 만듭니다
  • 브랜치 이름의 버전명은 지금까지 구현한 기능들에 따라 결정합니다
  • ex) git branch release/1.0.0
  • release 브랜치로 전환합니다

방법

  • release/1.0.0 이라는 이름의 브랜치로 전환합니다
  • ex) git checkout release/1.0.0

Step #9

  • release 브랜치에서의 작업을 수행합니다


방법

  • release 브랜치에서는 현재 버전에서 만든 기능들을 점검하고 필요시 수정합니다
  • 임의의 파일을 수정하여 release 브랜치 작업 수행을 대표합니다
  • ex) vi README.markdown + i + # release/1.0.0 + Esc + :wq
  • 해당 변경사항을 반영합니다

방법

  • 변경사항을 스테이지에 올리고 로컬 저장소에 커밋합니다
  • ex) git add . + git commit -m "test 1.0.0"

Step #10

  • master 브랜치로 전환합니다

방법

  • master 이라는 이름의 브랜치로 전환합니다
  • ex) git checkout master
  • release 브랜치를 master 브랜치로 병합합니다


  • develop 브랜치로 전환합니다

방법

  • develop 이라는 이름의 브랜치로 전환합니다
  • ex) git checkout master
  • release 브랜치를 develop 브랜치로 병합합니다

Step #11

  • 원격 저장소를 로컬 저장소와 동기화합니다

방법

  • master 브랜치를 push 합니다
  • ex) git push origin master
  • 원격 저장소에서 확인해봅니다

  • 이와 같은 방식을 git-flow 라고 합니다

※ 다른 브랜치들에 대해서도 보고자 한다면 각 브랜치들에 대해 git push origin branch-name 을 해줍니다
ex) git push origin develop


※ 버전 하나를 더 만들 경우의 그래프입니다


'Programming > Git' 카테고리의 다른 글

git-lfs-usage-and-benchmark  (0) 2019.04.28
[git mv]와 그 친구들  (0) 2018.01.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함