Git 시작하기
Git은 널리 쓰이는 버전 관리 시스템(VCS, Version Control System)이다.
버전 관리 시스템
- Revision control system
- 파일에서 변경된 부분을 관리한다.
- patch set을 구조화해서 파일로 저장하고, 그것을 적용해 특정 시점으로 되돌릴 수 있다.
- 중앙 집중식 버전 관리 (CVCS)
- 협업을 위해 만들어졌다.
- 분산 버전 관리 시스템 (DVCS)
- Git이 여기에 해당한다.
- 클라이언트가 마지막 스냅샷만 checkout 하지 않는다.
- 그래서 저장소 전부를 복제(clone)한다.
Git의 역사
Linux 프로젝트에서 BitKeeper를 사용하다가 라이선스 비용 문제로 직접 Git을 만들게 되었다.
목표는 다음과 같다.
- 빠른 속도
- 단순한 구조
- 비선형적 개발
- 완벽한 분산
Git 기초
- 기존 시스템들은 각 파일의 변화(차이, 즉 델타)를 기반으로 관리한다.
- Git은 데이터를 스냅샷의 연속으로 취급한다.
- 변경된 파일은 복제해서 저장한다.
- 변경이 없으면 복제하지 않고 이전 파일에 대한 링크만 저장한다.
- 거의 모든 명령을 로컬에서 진행한다. (그래서 빠르다)
- 무결성: 데이터를 저장하기 전에 체크섬을 구하고, 그 체크섬으로 데이터를 관리한다.
- Git은 데이터를 추가하기만 한다.
파일의 상태
파일은 committed, modified, staged 세 가지 상태를 가진다.
| 상태 | 설명 |
|---|---|
| committed | 데이터가 로컬 데이터베이스에 저장됨 |
| modified | 수정했지만 아직 저장하지 않은 파일이 존재함 |
| staged | 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태 |
이에 따라 프로젝트는 세 가지 단계로 나뉜다.
- git directory: Git이 관리하는 저장소
- working tree: 작업하기 위해 디스크로 파일을 가져온 곳
- staging area: git directory 안에 존재하며, 곧 커밋할 파일의 정보를 저장한다
설정
git config --global user.name "Yunseong"
git config --global user.email "[email protected]"
사용자 이름과 이메일을 설정한다.
git config --global core.editor vi
텍스트 편집기를 설정한다.
git config --list
설정된 내용을 모두 보여준다.