Git의 기본 특성
분산 버전 컨트롤 시스템 (DVCS)
- 클라이언트가 파일의 마지막 스냅샷을 checkout 하는 것이 아니라, 저장소를 전부 복제한다.
- 서버에 문제가 생기면 클라이언트 중 하나 가져다가 서버를 복원할 수 있음.
델타가 아니라 스냅샷을 통한 버전 관리
- 각 버전이 각 파일에 대한 변화(델타)를 저장하는 일반적인 VCS과는 달리, 전체 파일 시스템의 현재 상태의 스냅샷을 저장함.
- 파일이 달라지지 않았으면 이전 상태의 파일에 대한 링크만 저장함.
거의 모든 명령을 로컬에서 실행함
- 프로젝트의 모든 히스토리가 로컬 디스크에 있기 때문에 실행 속도가 빠름
- 오프라인에서도 작업 가능
해시를 통한 무결성
- 모든 데이터를 저장하기 전에 해시를 구하고, 해시로 데이터를 관리함
- 40자 길이의 16진수 문자열이며, 파일의 내용이나 디렉토리 구조를 이용하여 생성함
- git은 모든 것을 해시로 식별, 파일을 이름으로 저장하지 않고 해당 파일의 해시로 저장함.
- git 없이는 해시값을 알 수 없으므로 데이터를 알지도 잃어버릴 수도 없음
git은 데이터를 추가할 뿐
- git으로 무엇을 하든 데이터를 추가함.
- 되돌리거나 데이터를 삭제할 방법이 없음.
Git의 세 가지 상태
local 에서의 세 가지 area
- working directory: 프로젝트의 특정 버전을 git 디렉토리로부터 checkout 한 것. 로컬 작업은 여기서 이루어진다.
- staging area: 의미상으로는 area 이나, 단순한 파일로 이루어져 있다. 곧 커밋 할 파일들에 대한 정보를 저장한다.
- git directory: local 저장소. 프로젝트의 메타데이터와, 압축된 파일들을 저장한다. 다른 컴퓨터에 있는 저장소를 clone 할 때 생성된다.
파일의 상태
- untracked: git의 스냅샷에 존재하지 않는, 관리 대상이 아닌 파일. 새로 생성한 파일은 untracked 이다. git add 하면 tracked 상태로 바뀐다.
- unmodified : tracked 상태이나, 수정 사항이 없는 상태. 즉 스냅샷의 파일과 워킹 디렉토리 내의 파일 내용이 동일한 상태.
- modified: 워킹 디렉토리에서 파일을 수정한 상태.
- staged: 워킹 디렉토리에서 수정한 파일을 stage area에 추가한 상태. git add 명령어로 추가할 수 있다. 커밋할 스냅샷을 만들기 위한 중간 상태.
- commited: stage area에 있는 파일을 커밋해서 git 디렉토리에 영구적인 스냅샷으로 저장한 상태 => 커밋 후에는 다시 unmodifed 상태가 됨.
Git 설치 in Mac
https://code.google.com/p/git-osx-installer/
Git 초기 설정
'git config' 명령어로 설정 내용을 확인하고 변경할 수 있다. 이 때 사용하는 설정 파일은 세 가지가 있는데, 범위가 작은 설정 순으로 우선순위가 높다.
- 우선순위 3) /etc/gitconfig: 시스템의 모든 사용자와 모든 저장소에 적용되는 설정. git config --system
- 우선순위 2) ~/.gitconfig: 현재 사용자에게만 적용되는 설정. (home 디렉토리 하위에 있으므로..) git config --global
- 우선순위 1) .git/config: git 디렉토리에 있는 파일. 특정 저장소 혹은 현재 작업중인 프로젝트에만 적용되는 설정.
사용자 정보 설정
git config --global user.name "so"
git config --global user.email so@so-blog.net
설정 확인
git config --list : 설정한 모든 것을 보여줌
git config {key} : 해당 key에 대한 설정값을 보여줌 (예: git config user.name)
Git 도움말 보기
git help 명령어 / git 명령어 --help / man git-명령어
- 예: git help config 를 실행하면 config 명령에 대한 도움말을 볼 수 있음.
댓글0