Version Control System(VCS)
- 개발 중 문제가 발생하면, 전후 상황을 파악해 특정 시점 버전으로 돌아갈 수 있어야 한다.
- 형상관리시스템(Configuration Management System)
Local Version Control System (구 방식)
- 내 컴퓨터에서 버전 관리 가능 -> 내 컴퓨터 하드가 날아가면 전체 코드가 사라짐
- 버전은 관리되지만 협업은 힘듬
Centralized VCS
- 협업 가능
- Commit하는 순간 배포되어 다수에게 버그 유발 가능
- 인터넷 안되면 작업 불가
- 자신만의 version history를 가질 수 없음
- ex) CVS, SVV ...
Distributed VCS (오늘날의 형태. Git)
- Commit 하더라도 개인저장소 내 적용
- 원하는 순간 배포(push) 가능
- 오프라인에서 작업 가능
- 자신만의 version history 가짐
- ex) Mercurial, Git, ...
Git 구성요소
-
working dierctory. 우리 눈에 보이는 폴더. 파일 수정 후 Git에 add를 해줘야 staging area에 등록이 됨.
-
staging area. 이 단계에 있어야 commit이 됨. 버전을 매기기 전 단계
-
Git directory. 버전을 관리하고 있는 곳.
용어
Git에서 특정버전으로 이동한다 - 체크아웃
특정버전으로 이동하면 워킹 디렉토리에 영향을 줌. - 특정버전의 파일 상태로 덮어씌워짐.
파일 상태
- Staged
- Unmodified
- Modified(unstaged) - staged도 아니고 commit도 아닌 수정된 상태. 버전이 매겨진 파일을 수정. 수정된 상태에서 다시 버전을 매기려면 stage 상태로 바꿔줘야 함.
Git 작업 순서
- Working Directory에서 파일 수정
- Staging Area (index)에 파일을 Staged하여 commit할 스냅샷을 만든다.
- Staging Area (index)에 있는 파일들을 Commit하여 .git Directory(Repository)에 스냅샷 저장.
Github
- Git을 호스트해주는 웹 서비스, 협업을 위한 기능 제공
- 참고 : 소스코드 보안이 중요한 경우 사용을 기피하는 기업도 있다.
Gitlab
- 설치형 버전관리 시스템. 소스코드 보안이 중요한 기업에서 주로 사용
- 클라우드 버전 관리 시스템. 10명 이하 무료 (Github와 유사)
- Issue tracker, Git remote repository, API, Team, Group 기능 제공