첫번째 나무인 작업 디렉토리(Working directory)는 로컬(실제) 파일들로 이루어져있고, 두번째 나무인 인덱스(Index)는 준비 영역(staging area)의 역할을 하며, 마지막 나무인 HEAD는 최종 확정본(commit)
Git 저장소를 만드는 방법은 두 가지입니다.
git init
.git 디렉토리에는 저장소에 필요한 뼈대 파일(Skeleton)이 들어 있 이 명령만으로는 아직 프로젝트의 어떤 파일도 관리하지는 않습니다.
즉, 새로운 git 저장소가 만들어집니다.
다른 프로젝트에 참여하거나(Contribute) Git 저장소를 복사하고 싶을 때 git clone 명령을 사용합니다.
이미 Subversion 같은 VCS에 익숙한 사용자에게는 checkout이 아니라 clone이라는 점이 도드라져 보일 것입니다.
Git이 Subversion과 다른 가장 큰 차이점은 서버에 있는 모든 데이터를 복사한다는 것이다. git clone을 실행하면 프로젝트 히스토리를 전부 받아옵니다.
git clone git://github.com/schacon/grit.git
git add 명령으로 파일을 새로 추적할 수 있습니다.
git add <파일 이름>
git add *
git add *.*
git add .
수정한 것을 커밋하기 위해 Staging Area에 파일을 정리했습니다. Unstaged 상태의 파일은 커밋되지 않는다는 것을 기억해야 합니다.
Git은 생성하거나 수정하고 나서 git add 명령으로 추가하지 않은 파일은 커밋하지 않습니다. 그 파일은 여전히 Modified 상태로 남아 있을 것입니다.
커밋하기 전에 git status 명령으로 모든 것이 Staged 상태인지 확인할 수 있다. 그리고 git commit을 실행하여 커밋하도록 합니다
Git에서 파일을 제거하려면 git rm 명령으로 Tracked 상태의 파일을 삭제한 후에(정확하게는 Staging Area에서 삭제하는 것) 커밋해야 합니다.
push는 마지막으로 커밋한 사항을 git repository 에 올리겠다는 뜻입니다. push가 안되면 원격 서버에 변경사항이 저장되지 않습니다.
다시말해, 프로젝트를 공유하고 싶을 때 리모트 저장소에 Push할 수 있습니다.