1.1 버전관리란?
- 버전 관리 시스템(VCS - Version Control System) : 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템
1.1.1 로컬 버전 관리
- 로컬 VCS : 간단히 데이터베이스를 사용해서 파일의 변경 정보를 관리하는 시스템
- 아주 간단하지만 실수를 하기가 쉽다.
1.1.2 중앙집중식 버전 관리
- 중앙집중식 버전 관리(CVCS - Centralized VCS) : 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)하는 방식
- 로컬 VCS보다 관리가 쉽다는 장점이 있지만 중앙 서버에 문제가 발생한다면 치명적이라는 단점 존재
1.1.3 분산 버전 관리
- 분산 버전 관리(DVCS - Distributed VCS) : 단순히 파일의 마지막 스냅샷을 Checkout 하지 않고 저장소를 히스토리와 더불어 전부 복제하는 방식
- 서버에 문제가 생기면 이 복제물로 다시 작업 시작 가능
- 클라이언트 중에서 아무나 서버 복원 가능
- 많은 수의 리모트 저장소를 가질 수 있기 때문에 다양한 방법으로 협업 가능
1.3 Git 기초
1.3.1 차이가 아니라 스냅샷
- 대부분의 VCS 시스템은 각 파일의 변화를 시간순으로 관리하면서 파일들의 집합을 관리
- 그러나, Git은 이전 상태의 파일에 대한 링크만 저장해서 스냅샷의 스트림처럼 취급하여 관리
스냅샷❓
- 변경된 파일 전체를 저장하지 않고, 파일에서 변경된 부분을 찾아 수정된 내용만 저장하는 기술
1.3.2 거의 모든 명령을 로컬에서 실행
- 거의 모든 명령이 로컬 파일과 데이터만 사용하기 때문에 네트워크에 있는 다른 컴퓨터는 불필요
1.3.3 Git의 무결성
- Git은 데이터를 저장하기 전에 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리
- 그래서 체크섬을 이해하는 Git 없이는 어떠한 파일이나 디렉토리도 변경 불가
- Git은 파일을 이름으로 저장하지 않고 해당 파일의 해시로 저장
1.3.4 Git은 데이터를 추가할 뿐
- Git으로 무엇을 하든 Git 데이터베이스에 데이터가 추가된다.
1.3.5 세 가지 상태
- Git은 파일을 Committed, Modified, Staged의 세 가지 상태로 관리
- Committed : 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미
- Modified : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 의미
- Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미
-
Git 프로젝트의 세 가지 단계
- Git directory : Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳
- Working Directory : 프로젝트의 특정 버전을 Checkout 한 것
- Staging Area : 단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장하는 곳
-
Committed 상태 : Git 디렉토리에 있는 파일들
-
Modified 상태 : 아직 Staging Area에 추가하지 않은 상태(수정 전 상태 : Working Directory에 위치)
-
Staged 상태 : 파일을 수정하고 Staging Area에 추가
1.6 Git 최초 설정
1.6.1 사용자 정보
- Git을 설치하고 나서 가장 먼저 해야 하는 것은 사용자이름과 이메일 주소를 설정하는 것
$ git config --global user.name "사용자이름"
$ git config --global user.email "이메일주소"
1.6.3 설정 확인
$ git config --list
참조
https://git-scm.com/
https://yoongrammer.tistory.com/17