728x90
반응형
GitHub (그리고 Git)에서 main과 branch는 소프트웨어 개발에서 협업과 버전 관리를 가능하게 하는 핵심 개념입니다.
1. main (메인 브랜치)
- 기본 브랜치: main은 GitHub 저장소(Repository)를 처음 만들 때 기본적으로 생성되는 브랜치입니다. 과거에는 이 기본 브랜치의 이름이 master였으나, 2020년부터 GitHub는 인종차별적 의미를 내포할 수 있는 "master" 대신 "main"으로 이름을 변경했습니다.
- 안정된 버전: main 브랜치는 일반적으로 프로젝트의 안정적이고 배포 가능한 버전을 나타냅니다. 즉, 현재 서비스 중이거나 곧 서비스될 코드가 이 main 브랜치에 있다고 생각할 수 있습니다.
- 중심 개발 라인: 모든 개발자들이 각자의 작업을 마치고 최종적으로 통합하는 중심 개발 라인 역할을 합니다.
2. branch (브랜치)
- 독립적인 작업 공간: 브랜치는 말 그대로 "나뭇가지"처럼 코드 베이스에서 갈라져 나와 독립적인 작업 공간을 만드는 기능입니다. 이는 Git의 가장 강력한 기능 중 하나로, 여러 개발자가 동시에 다른 기능을 개발하거나 버그를 수정할 때 서로의 작업에 영향을 주지 않고 효율적으로 작업할 수 있게 해줍니다.
- 병렬 개발:
- 새로운 기능을 개발하거나 (예: feature/login, feature/payment)
- 특정 버그를 수정하거나 (예: bugfix/issue-123)
- 새로운 아이디어를 실험할 때 (예: experiment/new-algorithm) 와 같이 main 브랜치에서 새로운 브랜치를 생성하여 작업합니다.
- 분리된 워킹 디렉토리: 각 브랜치는 독립적인 파일 변경 이력을 가집니다. 특정 브랜치로 전환하면 해당 브랜치의 최신 코드 상태로 작업 환경이 변경됩니다.
- 병합 (Merge): 브랜치에서 작업이 완료되고 테스트를 거쳐 안정화되면, 해당 브랜치의 변경 내용을 main 브랜치(또는 다른 통합 브랜치)로 합치는 과정이 필요합니다. 이를 **병합(Merge)**이라고 합니다. GitHub에서는 주로 **Pull Request (PR)**라는 과정을 통해 변경 사항을 검토하고 병합을 진행합니다.
왜 main과 branch를 사용할까?
- 안정성 확보: main 브랜치를 항상 안정된 상태로 유지함으로써, 언제든 배포 가능한 코드를 확보할 수 있습니다.
- 동시 다발적 개발: 여러 개발자가 동시에 독립적인 작업을 진행할 수 있어 개발 속도를 높일 수 있습니다.
- 위험 감소: 새로운 기능 개발이나 버그 수정이 main 브랜치에 직접적인 영향을 주지 않으므로, 문제가 발생했을 때 main 브랜치를 손상시키지 않고 해당 브랜치에서만 문제를 해결할 수 있습니다.
- 협업 효율성: Pull Request를 통해 코드 리뷰 과정을 거치면서 코드 품질을 향상시키고, 팀원 간의 협업을 강화할 수 있습니다.
요약하자면, main 브랜치는 프로젝트의 "최종 결과물" 또는 "안정된 버전"을 나타내는 중심축이고, branch는 이 중심축에서 파생되어 각자의 작업을 독립적으로 수행하고 나중에 다시 중심축으로 합쳐지는 "작업 공간"이라고 이해하시면 됩니다.
728x90
반응형
'코딩' 카테고리의 다른 글
| endless real clips Prompt (0) | 2025.07.28 |
|---|---|
| 웹서비스 개발을 위한 프롬프트 (0) | 2025.07.28 |
| 나 만의 LLM 만들기 (0) | 2025.07.24 |
| 프롬프트1 - 영화 대사 검색 시스템 (0) | 2025.07.24 |
| 코드 리버스 프롬프팅; Code Reverse Prompting (0) | 2025.07.24 |