이번 주에 팀원들과 프로젝트를 하면서, 브랜치를 이전에 했던 것과 다르게 더 세분화하며 작업하게 되어서 git branch에 대한 개념 정립을 다시 해야 할 필요성을 느꼈다.
이전까지만 해도, 나 혼자 과제할 때는 main-develop 이 정도로 1개의 추가 브랜치만 만들어서 커밋을 했었다. 사실 브랜치를 나누는 큰 의미가 없는 수준이긴 했다.
직전 팀 과제에서도 마찬가지로, main 브랜치 밑에 각자의 브랜치만 1개씩 만들고 진행했어서 main에 merge할 때 많은 충돌과의 싸움은 있었지만, 브랜치 자체에 대한 고려는 크게 하지 않았던 것 같다. 그리고 당시엔 나도, 팀원들도 지금보다도 더 Git이 어색하다보니 다른 사람꺼 pull해오다가 본인 코드 날아가고 이런 일도 여러 번 있었더랬다.
예전에 캠프 개강 초창기에 Git 특강을 들으며 정리했었던 내용을 바탕으로 다시 한 번 Git과 GitHub에 대해 정리를 해보려고 한다.
1. Git과 GitHub
1) Git이란?
한 프로젝트의 변경사항을 체계적으로 관리하기 위한 도구
- 변경 사항 관리 : 버전(commit) 관리
- 버전 : 유의미한 변화가 결과물로 나온 것
- 유의미한 변화 : 새 기능 추가, 버그 픽스, UI/UX 개선 등
2) Git 사용 이유
- 변경 내역을 일목요연하게 확인하기 위해
- 필요 시에는, 이러한 변경 내역을 바탕으로 작업을 되돌리기 위해
- 다른 팀원들과 협력하기 위해
3) GitHub란?
- 원격 저장소 호스팅 서비스
- 원격 Git으로 관리한 프로젝트 호스팅 서비스
- 그리고.. 개발자들의 SNS
팀원들과 Git에 대해 이야기 하다가 내 스스로도 정리가 안돼서 그려본 흐름도이다. 그런데 이게 맞나? 일단 내가 이제까지 공부하면서 생각한 개념은 이 정도인데, 확인을 위해서 구글에 좀 더 자료조사를 해봤다.
위 두 그림은 내가 찾고자 했던 브랜치에 대한 이미지는 아니지만, 작업 디렉토리에 있던 파일들이 어떤 단계를 거쳐 최종적으로 커밋되는지 단계를 잘 보여줘서 한번 더 보려고 가져와봤다.
4) Git의 3단계
작업 디렉터리
버전 관리의 대상이 위치하는 공간 (.git 파일이 있는 디렉터리를 말한다.)
스테이지
작업 디렉터리의 변경사항 중 다음 버전이 될 후보가 올라가는 공간
저장소
- 로컬 저장소
- 원격 저장소
2. Git Flow
내가 궁금했던 그림과 비슷하다. Git Flow라고 한다.
Git-flow는 총 5가지의 브랜치를 사용한다.
- main(master) : 기준이 되는 브랜치로 제품을 배포하는 가장 상위 브랜치
- develop : 개발 브랜치로 개발자들이 이 브랜치를 기준으로 각자 작업한 기능들을 merge
- feature : 단위 기능을 개발하는 브랜치로 기능 개발이 완료되면 develop 브랜치에 merge
- release : 배포를 위해 master 브랜치로 보내기 전에 먼저 QA(품질검사)를 하기위한 브랜치
- .hotfix : master 브랜치로 배포를 했는데 버그가 생겼을 떄 긴급 수정하는 브랜치
main과 develop 두 브랜치가 메인 브랜치이고 나머지는 필요에 의해서 운영하는 브랜치라고 보면 된다.
이제까지는 main, develop 정도로만 작업해봤다면 이번에는 feature 브랜치부터 시작하는거라고 생각하면 될 것 같다.
Git은 알다가도 모르겠다. 정말 어려워~!
3. 참고 사이트
https://techblog.woowahan.com/2553/
'✍️ What I Learned > TIL' 카테고리의 다른 글
[TIL] 클린 코드 - Custom Hook, Container - Presentational 패턴, 파일/폴더 구조(패턴) (0) | 2023.07.05 |
---|---|
[WIL] 팀 프로젝트 회고 (React 뉴스피드 프로젝트) (0) | 2023.07.04 |
[TIL] .env 환경변수 파일 (0) | 2023.06.27 |
[WIL] Week 2 회고 (0) | 2023.05.29 |
[TIL] 20230523 Day 9 - 문자열 연습, 반복문과 조건문 연습 (0) | 2023.05.23 |