프로젝트 협업 시 각각의 개발자는 원격저장소에 저장된 프로젝트 파일을 개인이 사용하는 로컬저장소에 받아 작업한다.
새로운 작업내용이 있을 때 원격저장소의 소스코드에 작업내용을 추가하고 다시 로컬저장소에서 작업한다.
git은 위의 과정에서 프로젝트의 버전을 관리하기 위한 프로그램으로 명령어로 쉽게 사용할 수 있다.
git과 함께 사용되는 github은 프로젝트의 전체 소스코드를 저장할 수 있는 원격저장소를 제공하고
기존의 소스코드나 새로 추가할 내용을 좀 더 가시적으로 제공하는 웹서비스이다.
처음 git과 github를 접했을 때는 레포지토리를 생성하고, 로컬저장소와 연결해 변경사항이 있을 때 add, commit, push만을 사용해 프로젝트를 관리했다.
하지만 협업을 하고 프로젝트가 복잡해질수록 버전관리 또한 중요한 부분이 되었고, 이런 문제를 해결할 수 있는 방법을 찾게 되었다.
그 과정에서 몇가지 명령어를 새로 익히게 되었고, git-flow에 대해서도 공부할 수 있었다.
버전관리 중 발생할 수 있는 문제를 최소화하기 위한 전략으로 브랜치를 기반으로 한 버전관리 방식
git-flow 방식에서는 브랜치를 개발 단계에 따라 5종류로 나누어, 각 단계에 맞는 브랜치를 사용한다.
메인 브랜치
메인 브랜치는 항상 유지하는 브랜치로 보조 브랜치의 결과를 반영하는 브랜치이다.
보조 브랜치
실제 기능의 개발, 수정은 보조 브랜치에서 이루어지며, 필요에 따라 생성하거나 폐기하는 브랜치이다.
결국 개발용 메인 브랜치와 배포용 메인 브랜치가 있고 실제 작업은 따로 브랜치를 만들어 결과만 메인 브랜치에 반영하는 구조
git-flow를 공부하다 보니 개발 자체도 중요하지만 리액트 폴더구조나 네이밍 컨벤션, ESLint, Prettier 등 여러 사람이 함께 작업할 때 발생할 수 있는 차이를 방지하기 위한 개념이 많은 것 같다.
https://techblog.woowahan.com/2553/
https://devlog-h.tistory.com/6