▶ 형상 관리란?
- 형상 관리 : 소프트웨어의 변경 사항을 체계적으로 추적하고 통제하는 것
- 형상 관리 시스템
- 개발 중 발생하는 모든 산출물이 변경됨으로써 점차 변해가는 소프트웨어 형상을
체계적으로 관리하고 유지하는 시스템
- 개발 산출물의 버전 관리와 변경 내역 조회 가능
▶ Git
- 대표적인 형상 관리 툴
- 프로젝트(소스 코드)를 저장하고 이력을 관리하는 저장소(repository)
- 원하는 시점에 소스 코드를 저장하거나 저장 지점으로 돌아가는 기능을 제공
/ 프로젝트의 버전을 관리할 수 있음 - 여러 PC에 소스 코드를 저장시키거나 여러 PC에서 작성한 내용을 하나로 병합(merge)하는 것이 가능
▶ GitHub
- 코드 저장소 Git을 웹으로 이용할 수 있게 만든 원격 저장소(remote repository)
- 인터넷이 제공되는 환경에서 소스 코드의 공유 및 버전 관리가 가능.
- 여러 개발자가 하나의 원격 저장소에 있는 소스 코드를 받거나 변경한 코드를 병합하는 것이 가능 → 협업 가능
▶ 저장소(Repository) 종류와 관련 용어
- Working Directory :
작업이 진행되는 폴더
- 프로젝트 폴더를 의미
/ 소스 코드 변경 후 git add(단순 save, ctrl + s) 시 Staging Area로 전달됨
- Local Repository에 저장된 소스 코드를 현재 프로젝트에 병합(merge) 가능 - Staging Area :
준비 영역 / 중간 영역
- 변경된 코드가 Local Repository에 저장하기 전 머무르는 중간 영역
- Local Repository에 저장할 코드를 선택하고 commit을 통해 저장할 수 있음 - Local Repository :
내 PC에 있는 저장소
- 소스 코드의 추가 / 변경 사항을 기록하는 저장소
- Local Repository에 저장된 내용은 Remote Repository에 push를 반영할 수 있음
- Remote Repository에 저장된 소스 코드를 fetch를 통해 얻어와 Local Repository에 저장 가능 - Remote Repository : 원격 저장소(GitHub)
▶ Branch
- 하나의 저장소(Repository) 내에 여러 버전을 만들어 작업할 수 있는 방법
- 독립적으로 작업을 진행하기 위해 저장소를 분리하는 개념
- 협업 진행 시 원본(master branch) 코드를
각자 분리된 작업 영역(branch)으로 가져가 서로 다른 작업을 진행 - 각자 branch로 가져간 코드는 변경되어도 원본에 영향을 미치지 않음
- 코드가 변경된 branch의 내용을 master branch에 적용해달라는 요청(Pull Request)을 보낼 수 있음
- 요청이 받아들여지면 master branch에 변경한 코드 내용이 병합됨