이번 포스팅 이후부터는 개인적으로 정리하기 위해 평어체로 작성하겠습니다.
Git Flow란?
Git Flow(by Vincent Driessen)는 Git 소스 관리 방법중 하나이다.
Git 저장소(Repository)는 main 혹은 master 하나가 있고, 브랜치(branch)를 통해 나무가 가지치는 것처럼 여러 갈래로 나눌 수 있다.
나눠진 갈래는 나중에 병합(merge)을 통해 master에 합치면 된다.
Git Flow는 브랜치를 특정 시점으로 나누어 작업한다.
- master(main)
- develop
- feature
- release
- hotfix
크게 위의 5가지로 브랜치를 나누면 된다.
브랜치별 정리
master
master 혹은 main이라고 하며 항상 소스의 최종본이어야 한다.
develop
master의 최종본을 복사한 브랜치이다. 단어 그대로 develop 브랜치에서 개발을 진행하면 된다.
feature
develop 혹은 특정 feature에서 복사한 브랜치이다. 여러 기능을 개발하여 적용해보고 이상이 없으면 develop에 병합하면 된다.
또한 브랜치의 이름을 구분해주면 좋다. ex) feature/check-jwt
release
master에 병합하기 전에 테스트, QA 등을 진행하는 브랜치이다. 완료되면 master와 develop에 병합해준다.
hotfix
master에서 크리티컬한 에러나 버그가 발생하여 급하게 수정해야 할 경우 생성하는 브랜치이다. 작업이 완료되면 master에 병합해준다.
hotfix 브랜치도 작업이 완료되면 develop에도 병합한다.
인텔리제이에서 Git 저장소 다루기
위에서 정리한 내용을 통해 Git 저장소를 만들어보고 브랜치까지 생성해보자.
저장소는 인텔리제이에서는 Github 관리기능을 제공한다.
프로젝트 생성 후 Git 저장소에 올리기
주로 SpringBoot 프로젝트로 작업하므로 SpringBoot 샘플 프로젝트를 만든다.
의존성은 Lombok과 Spring Web만 추가한다.
Search Anywhere(Shift 두번)에서 github를 입력하면 Github 아이콘과 함께 Share Project on Github이 나타난다. 선택.
Github에 바로 Repository를 생성할 수 있다. Repository name을 지정한다. Description은 설명을 적어도 되고 안적어도된다.
Share 버튼을 클릭.
생성한 Git 저장소에 처음 올릴 파일을 보여준다. 따로 손댈건 없으니 바로 Add한다.
완료되면 오른쪽 아래에서 해당 메시지가 나타난다.
develop 브랜치 생성하기
위에서 적었듯 develop은 master의 최종본에서부터 시작한다.
인텔리제이에서 편하게 브랜치를 생성하고 checkout 할 수 있다. (checkout은 Git 저장소에서 내려받는 것을 뜻함)
오른쪽 아래 master를 선택하면 메뉴가 나타난다.
Local Branches의 master를 선택하면 또 하위 메뉴가 나타난다. New Branch from 'master'를 선택.
창이 나타나면 이름은 develop으로 입력하고 Checkout branch를 선택한다.
현재 소스의 브랜치가 master에서 develop으로 변경되었으며 Local Branches에 develop과 master 두 개가 생성되어 있다.
Github 원격 저장소(Remote Branches)에는 아직 올라가있지 않은 상태.
이제 develop에서 HelloController를 하나 만들어본다.
처음 파일을 생성하면 자동으로 Git에 저장할것인지 물어본다. 매번 창이 떠서 눌러주는것은 귀찮으니까 Don't ask again을 선택하고 Add를 누른다.
간단한 GetMapping의 hello 메서드를 만들었다.
생성한 컨트롤러는 Commit과 Push를 통해 Git 저장소에 업로드한다.
Ctrl + K를 누르면 변경된 사항을 Commit 하는 창이 나타난다. Commit message에 변경한 내용을 작성하고 파란 Commit 버튼을 클릭한다.
Commit은 Git 저장소에 올릴 준비까지만 한것이다. Push를 통해 최종적으로 저장소에 업로드해야 한다.
Ctrl + Shift + K를 누르면 준비된 Commit을 Git 저장소에 Push 하는 창이 나타난다.
왼쪽 메뉴에서 준비된 Commit들을 확인할 수 있다. 오른쪽에 있는 파일을 더블클릭하면 변경사항을 확인할 수 있다.
(초록색은 신규로 추가된 파일 혹은 소스를 뜻한다.)
Push를 누르면 업로드가 진행되고 아래 메시지가 나타난다.
Git 브랜치 선택 메뉴를 클릭하면 Remote Branches에 develop이 생성되어 있는걸 볼수있다.
인텔리제이에서만 확인하면 찝찝하니까 직접 Github에도 가서 확인해보자.
정상적으로 gitflow-sample 저장소가 생성되어있다.
gitflow-sample에 들어가보면 develop 브랜치도 생성되어 있다.
feature 에서 작업 후 develop에 병합(merge) 하기
이번에는 develop에서 다시 feature 브랜치를 생성하여 작업하고 작업한 내용을 develop에 병합해보자.
위에서 한것처럼 develop에서 가져온 feature 브랜치를 Local에 생성하자. helloservice를 생성할거라서 feature/add-helloservice로 이름을 지정하였다.
현재 브랜치가 잘 선택되었는지 확인해본다.
브랜치 이름을 잘못 입력했다고 생각된다면 Rename으로 다시 이름을 지정할 수 있다. (대소문자 구분 없음)
이상 없으면 HelloService를 만든다.
HelloController에서 HelloService를 사용하도록 소스를 수정한다.
HelloService는 새로 생성되어 초록색으로, HelloController는 수정되어 파란색으로 표시된다.
Commit(Ctrl + K) 창을 열어 메시지를 작성하고 Commit 한다.
HelloService의 sayHello 메서드의 return을 수정해서 다시 올리는게 좋을것같다.
Push는 진행하지 않고 HelloService의 sayHello return을 수정하자.
Commit 창을 열고 다시 메시지를 작성하고 Commit 한다.
Push(Ctrl + Shift + K) 창을 열면 총 2개의 Commit이 있다. 위에서 작업 후 Push를 진행하지 않았으므로 2개가 그대로 준비되어있는것.
Push 버튼을 눌러 작업한 내용을 업로드 한다.
브랜치 병합하기
이제 feature에서 작업한 브랜치의 내용을 develop에 병합해보자. 이 작업은 Github에서 진행한다.
Github의 저장소에 들어오면 아래 메시지가 나타난다. 위에서 총 2번의 브랜치 작업을 진행했는데 master -> develop과 develop -> feature 이다.
이번에 진행할 것은 feature의 내용을 develop에 올릴 것이므로 feature/add-helloservice의 Compare & pull request를 선택한다.
base가 develop으로 되어있는지 잘 확인한다. comment를 입력하고 Create pull request를 누른다.
소스 비교 후 이상이 없으면 Merge pull request를 진행할 수 있다. 만약 충돌하게 되는 경우라면 충돌하는 소스의 내용을 수정해야 가능하다.
Merge pull request를 누르면 병합을 진행하는 버튼이 나타난다. Confirm merge를 선택한다.
이상없이 병합되면 보라색으로 된 메시지를 확인할 수 있다. feature 브랜치가 더 이상 필요 없다면 Delete branch로 삭제하면 된다.
Github의 저장소의 develop 브랜치로 이동하면 방금 병합한 소스가 반영된것을 확인할 수 있다.
다시 인텔리제이로 돌아가서 Local의 develop 브랜치를 확인하자. Remote 저장소로부터 내려받을 것이 있다면 파란색 뱃지 모양으로 표시된다. (초록색 뱃지는 Commit할 내용이 있다는 의미이다.)
Git 관련 내용은 인텔리제이 아래 Git 메뉴를 선택하면 자세히 볼 수 있다.
develop 브랜치 Update를 진행한다.
Update가 완료되면 해당 브랜치를 더블 클릭하여 Commit 이력을 볼 수 있다.
같은 방법으로 develop 브랜치를 master에 병합한다.
master 브랜치를 더블 클릭하면 마찬가지로 Commit 이력을 볼 수 있다.
참고
코딩애플의 Git workflow (https://www.youtube.com/watch?v=EV3FZ3cWBp8)
'개발 > 개발환경' 카테고리의 다른 글
[Jenkins] 빌드부터 배포까지 2 - 작업 프로젝트 생성 (0) | 2022.08.04 |
---|---|
[Jenkins] 빌드부터 배포까지 1 - 젠킨스 설치 (0) | 2022.08.01 |
[docker] 도커로 MariaDB 설치부터 접속까지 (0) | 2021.11.30 |
[docker] 도커로 Redis 설치부터 key-value 확인까지 (0) | 2021.11.30 |
[docker] 도커로 RabbitMQ 설치부터 관리페이지 접속까지 (0) | 2021.11.30 |
댓글