현재 사용 중인 Git Flow


GitFlow,어떻게?


안녕하세요. 오늘은 GitFlow에 관련된 이야기를 조금 해보려고 합니다. Git이란 형상관리툴로 불리는 기술로, Github나 Gitlab과 같은 웹호스팅을 거쳐 Local과 Remote간에 코드를 백업하거나, 서로 다른 코드부분을 찾아낸다거나, 협업간에 작업이 서로 겹치지 않도록 하거나, 이전 작업 기록을 불러오거나-

개발자에게 있어서 많은 것을 할 수 있는 툴입니다. 사실, 개발이라는 것을 하는 사람이라면 대부분이 사용하거나, 못해도 이름은 들어봤을정도로 유명한 기술입니다.

하지만, 이 기술은 오픈소스, 나아가 협업을 위해 기획된 툴로써, 서로간의 커뮤니케이션이 꽤 중요한 위치에 있습니다.

Git

Git에서의 협업에 대한 커뮤니케이션

커뮤니케이션이란, 어떻게 보면 서로간의 프로토콜이기도 합니다. Git이라는 툴을 사용하여 코드를 Remote로 올리고, 필요한 때에, Local로 가져오는 행위와 같은 모든 행위에는 일련의 순서를 지켜주는 편이 좋습니다. 그리고 이 순서가 바로 프로토콜이며, 서로간의 커뮤니케이션이 되겠죠.

지키지 않는다고 사용하지 못하는 것은 절대 아닙니다. 하지만, 지킴으로써 불미스러운 사고를 미리 예방할 수 있는 것은 분명합니다.

특히나 여러명이서 작업하는 프로젝트인 경우는요!

그래서 나는 어떻게?

사실 Git의 커뮤니케이션은 GitFlow라고 불리우는데, 실제 검색해보면 대표적인 Flow들과 그 장단점을 자세히 볼 수 있습니다. (물론 영어입니다만.) 종류가 다양한 만큼, 이 글을 보고있는 여러분들이 어떤걸 선택해도 상관없습니다. 그저 사용방법과 용도에 걸맞게 취사선택을 하면되는 것이지요.(혹은 원하는 형태나)

그런 와중 제가 선택한 Flow는 바로 아래 링크에 게시된 글입니다.

https://jeong-pro.tistory.com/196

시간이 난다면 한번 들어가보시는 것도 추천합니다. 오히려 제 글보다는 훨씬 더 잘 풀어 설명해주셨으니, 이해는 훨씬 잘될 것입니다. 다만, Git과 branch의 개념이 무엇인지 정도는 공부하고 가는 것을 추천드립니다. 그 개념이 옅어서는 쉽게 적용하기 어려운 개념일 수도 있거든요.

아무튼 저 링크의 내용을 어느정도 받아들여 현재 사용하고 있는 Git Flow는 아래와 같습니다.

  1. Remote에는 master와 develop branch가 존재해야 합니다

  2. Local에는 master와 (local용)develop branch가 존재해야 합니다

  3. 1,2번이 준비가 되었다면, 작업 순서는 아래와 같게 진행하시면 됩니다.

  4. 먼저, Remote의 develop branch(아무런 작업도 하지 않았다면 Remote의 master와 동일한 상태겠죠?)의 내용을 Local의 develop Branch에 Pull을 이용하여 옮겨줍니다.

  5. 그리고 해당 Local Branch(develop)를 이용하여 Local Feature Branch를 만들어줍니다. (Feature Branch는 모듈 단위 기능 개발시에 사용하려 만드는 Branch입니다.)

  6. 이후 만들어진 Feature Branch로 checkout을 한 후, 해당 Branch에서 작업을 합니다.

  7. 작업이 끝나면 add, commit을 해준 후, checkout을 통해 local develop branch로 돌아옵니다.

  8. 그리고 혹시 누군가가 remote의 데이터를 업데이트 했을 수도 있으므로, 한번 더 pull을 이용하여 데이터를 받아옵니다. 이 방법은 4번과 동일합니다.

  9. 데이터를 pull 이용하여 최신 데이터로 바꾸어주었다면, 이후 merge를 통하여 feature branch의 내용을 develop branch(local) 안에 덮어씌웁니다.

  10. 성공적으로 덮어씌웠다면 커밋은 이미 되어있는 상태이므로 그대로 push를 통하여 Remote의 develop branch에 올려줍니다.

  11. 이후 문제가 없다면 종료. 마지막으로 feature branch를 삭제해주면 끝입니다.

  12. 추가로 마지막 배포작업까지 끝이 났다는 가정하에, Remote의 develop branch를 Remote의 master branch와 합치고, 릴리즈하면 될 것 같습니다. (로컬은 알아서 정리!)

이런식으로 사용하는데요, 사실, 오늘 처음 써봤는데, 제법 괜찮은 방법같아 공유합니다.

아무튼 오늘 글은 여기까지!

Tag : Git,git,communication,Github,Gitlab