2. 형상 관리 시스템_Git
(Software) Configuration Management System
즉, 형상 관리 시스템이란, 소프트웨어의 변경사항을 체계적으로 추적, 통제 하는 것을 말함
- GUI: 그래픽 사용자 인터페이스
- CLI: 커맨드 라인 인터페이스
- 소스트리: GIT을 유저 친화적이게 만든 것
GIt의 장점
- 불필요한 파일을 생성하지 않아도 됨
여러 버전을 위해 중복되는 파일을 생성하지 않아도 됨
- Git을 이용해 여러 개발자와 협업이 용이해 짐
각 개발자마다 수정한 내역을 확인할 수 있음
Git은 이렇게 소프트웨어를 항상 확인하는데, 이를 클라우드 서비스로 제공해주는게 깃허브임
- Push: 깃허브에 코드 업로드
- Pull: 깃허브에서 코드 다운로드
형상 관리란?
형상 관리
- 소프트웨어의 변경 사항을 체계적으로 추적하고 통제하는 것
간혹 면접에서 형상관리의 정의 또는 관련 질문이 올 수 있다고 하니 참고!
형상 관리 시스템 (Git)
-
개발 중 발생하는 모든 산출물들이 변경됨으로써 점차 변해가는 소프트웨어 형상을 체계적으로 관리하고 유지하는 시스템
-
개발 산출물들의 버전 관리와 변경 내역 조회 가능.
-
Git이 형상관리 시스템임
GIt을 클라우드 서비스로 제공하는 게 GIthub임
SVN을 사용하는 경우도 있음
→ git이 더 복잡하지만 체계적이고, 안정적임
- 브랜치: 협업에 사용하거나, 한가지 버전에서 다른 버전으로 만들 때 사용하는 것
Git
-
대표적인 형상 관리 툴
-
프로젝트(소스 코드)를 저장하고 이력을 관리하는 저장소(repository)
-
원하는 시점에 소스 코드를 저장하거나 저장 지점으로 돌아가는 기능을 제공하여 프로젝트의 버전을 관리할 수 있음.
→ Git 사용의 대표적 이유
-
여러 PC에 소스 코드를 저장시키거나 여러 PC에서 작성한 내용을 하나로 병합(merge)하는 것이 가능함.
GitHub
GitHub Link
-
코드 저장소 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
로컬 저장소에서 원격 저장소에 올리는 과정
-
업로드 할 파일 생성
-
저장을 누르는 순간 Git의 Stage에 올라감
- stage: Local repository에 올리기 전 대기하는 장소
commit
을 해야 로컬 저장소로 올라감
-
로컬 저장소에서 push
하면 원격 저장소로 올라감
원격 저장소에서 가져오는 과정
-
깃허브에서 fetch
를 한 뒤 로컬 업데이트 사항을 확인함
-
merge
를 통해 확인 된 업데이트를 가져와 적용함
-
위 1,2번 과정을 pull
을 통해 한번에 할 수 있음
Branch
- branch : 나뭇가지, 분기, 갈라지다
- 하나의 저장소(Repository) 내에 여러 버전을 만들어 작업할 수 있는 방법
- 독립적으로 작업을 진행하기 위해 저장소를 분리하는 개념
- 협업 진행 시 원본(master branch) 코드를 각자 분리된 작업 영역(branch)으로 가져가 서로 다른 작업을 진행
- 각자 branch로 가져간 코드는 변경되어도 원본에 영향을 미치지 않음
- 코드가 변경된 branch의 내용을 master branch에 적용해달라는 요청(Pull Request)을 보낼 수 있음
- 요청이 받아 들여지면 master branch에 변경한 코드 내용이 병합됨