프로젝트 협업 시 git branch를 문제없이 사용하는 방법
프로젝트 협업 시 git branch를 문제없이 사용하는 방법을 알아보자..
스파르타 부트캠프에 오고나서 git을 정말 많이 사용해본 것 같다. 그런데, pull과 merge, 그리고 push하는 과정에서 정말 쉽게 생각했는데 최종 프로젝트에서 그동안 잘못 알고 있었다는 것을 깨닫고 글을 작성하게 되었다.
개요
이전 프로젝트에서의 나의 작업 순서는 아래와 같았다.
- 프로젝트 세팅
-
clone
받은 후branch
생성 - add, commit, push, pr
사실 이 3번까지의 과정은 처음 작업할 때 크게 문제가 되지 않았다. 문제가 되었던 것은 다른 작업자가 나보다 먼저 pr을 올린 후 merge하는 부분과 위와 같이 작업 후 다른 기능을 작업하기 위해 사용하던 브랜치에서 새로운 브랜치를 만들어 작업을 진행했던 것.
문제
문제를 설명하자면 아래와 같다.
2-1) 로컬, 원격 dev 동기화
다른 사람이 먼저 작업 후 dev에 merge하고 나의 작업을 PR하기 전 merge되어 있는 merge해야할 때 (동기화 작업)
- 이 때 원래 항상 git pull origin dev를 사용했는데, 문제가 되었던 건 내 현재 브랜치에서 pull을 받기 때문에 나의 로컬 dev는 원격 dev와 동기화가 되지 않는다는 것이다. 그렇기에 이후에 브랜치를 생성할 때 마다 원격의 dev에 pull을 했었으며, 중간 과정에서 충돌도 정말 많이 경험했다.
2-1) 추가 작업 브랜치 생성
두 번째는 새로운 브랜치를 생성하는 과정에서 문제가 되었다. A브랜치 작업이 끝난 후 B브랜치를 생성하고 B의 내용을 push하게 되면, B브랜치를 작업할 때 A브랜치의 작업 또한 B브랜치에 반영이 되며, push할 경우 A브랜치 커밋도 함께 올라가져서 작업 단위로 branch를 나눈 이유가 사라져 버린다.
해결방법
3-1) 로컬, 원격 dev 동기화
작업 순서에서 추가가 되면 된다.
- 프로젝트 세팅
-
clone
받은 후branch
생성 - add, commit
- 다른작업자가 pr, dev merge 하면 현재 나의 branch에서 dev branch로 이동한다.
- 이후 git pull origin dev해서 원격,로컬 dev를 동기화해준다.
- 다시 나의 작업 브랜치로 이동한 후 git merge dev를 해주어 현재 브랜치에 dev의 내용을 동기화해준다.
- 이 시점에서 충돌이 있을 경우 해결해주고 push, pr을 진행한다.
위와 같이 진행하게 되면, 다른 작업자의 최신 작업 내용 또한 잘 동기화되어 이후 충돌이 많이 없어진다.
3-2) 추가 작업 브랜치 생성
이 부분은 그래도 생각보다 간단하다. 만약 내가 A의 브랜치의 작업이 끝날 경우, dev 브랜치로 이동 후 dev 브랜치에서 다시 B브랜치(새로운 브랜치)를 생성하고 해당 브랜치로 이동해서 작업을 진행하면 된다.
- A브랜치 add,commit,push,pr
- dev 브랜치 이동
- 원격, 로컬 동기화
- 새로운 기능 브랜치 생성
- 새로운 브랜치로 이동 후 작업
이렇게 작업을 진행하게 되면 각 브랜치의 commit 내용이 들어가져있고, 어떤 기능의 브랜치인지 헷갈리지 않을 수 있다.
마무리
현재까지의 경험으로 글을 정리해보았는데, 정답이 아닐 수 있다고 생각한다. 이후의 더 경험을 하면서 좋은 방법이 있거나 나의 방법이 틀릴 경우 다시 수정해보도록 해야겠다.