기존 VCS는 파일의 변화를 시간순으로 관리 (델타기반) 하나 Git의 경우 데이터를 sanpshot의 stream 처럼 관리한다.
모든 명령을 Local에서 실행하여 network 성능에 따른 영향을 받는 VCS보다 빠르다. -> 로컬 데이터베이스에서 히스토리를 읽어서 보여 준다.
데이터를 저장하기 전에 항상 SHA-1으로 Checksum을 구하고 데이터를 관리한다.
3가지 Status -> Committed / Modified / Staged
Committed : 데이터가 로컬 데이터베이스에 안전하게 저장됐다. git directory 파일들은 Committed 상태
Modified : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않음. Checkout 후 수정했지만, Staging Area 추가 하지 않은 경우
Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미, 파일 수정후 Staging Area 추가 시
Git 프로젝트의 3가지 단계
Directory : 프로젝트의 메타데이터와 객체 데이터베이스를 저장, 저장소 Clone 시 생성된다
Working Tree : 프로젝트의 특정 버전을 Checkout 한 것 (디렉토리 내 데이터베이스에서 파일을 가져와 생성)
Staging Area : 단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장, Index라고도 함
워킹 트리에서 파일을 수정 → Staging Area에 파일을 Stage 해서 커밋할 스냅샷 생성 (모든 파일 또는 선택추가)
→ Staging Area에 있는 파일들을 커밋해서 Git 디렉토리에 영구적인 스냅샷으로 저장
Git 최초 설정
$ git config
/etc/gitconfig파일: 시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다.git config --system옵션으로 이 파일을 읽고 쓸 수 있다. (이 파일은 시스템 전체 설정파일이기 때문에 수정하려면 시스템의 관리자 권한이 필요하다.)
~/.gitconfig,~/.config/git/config파일: 특정 사용자(즉 현재 사용자)에게만 적용되는 설정이다.git config --global옵션으로 이 파일을 읽고 쓸 수 있다. 특정 사용자의모든저장소 설정에 적용된다.
.git/config: 이 파일은 Git 디렉토리에 있고 특정 저장소(혹은 현재 작업 중인 프로젝트)에만 적용된다.--local옵션을 사용하면 이 파일을 사용하도록 지정할 수 있다. 하지만 기본적으로 이 옵션이 적용되어 있다. (당연히, 이 옵션을 적용하려면 Git 저장소인 디렉토리로 이동 한 후 적용할 수 있다.)
각 설정은 역순으로 우선시 된다. 그래서.git/config가/etc/gitconfig보다 우선한다.
댓글 영역