clone 이란 명령으로 원격 저장소의 모든 소스를 로컬 저장소로 복제할 수 있었습니다.
그 방법 외에도 로컬 저장소를 생성하는 방법으로 init 명령을 사용할 수 있습니다.
어느 디렉토리에서든 init 명령 하나로 해당 디렉토리에 .git 디렉토리를 생성하고 로컬 저장소가 될 수 있습니다.
$ pwd
/home/oops4u/dev2
$ git init
Initialized empty Git repository in /home/oops4u/dev2/.git/
init 란 명령으로 간단하게 로컬 저장소가 생성되었습니다.
이 로컬 저장소에 이미 기존 작업물이 존재하거나 새로 작업물을 만들어서 원격 저장소에 보내려 한다면,
우선적으로 로컬 저장소 상에서 버전 관리에 대한 준비를 마쳐야 합니다.(commit)
* git 의 로컬 저장소 구조는 다음과 같습니다.
- Working directory : 실제 파일 디렉토리(unstaging area)
- Index : 준비 영역(staging area)
- HEAD : 최종 확정본(commit)
Working directory 에서 버전 관리 하려는 파일들을 add 명령을 사용하여 Index 영역에 등록시키고,
commit 명령으로 HEAD 상태로 만들면 원격 저장소로 보낼 수 있는 준비가 완료된 것입니다.
빈 디렉토리에서 하나의 파일을 생성하고 commit하여 HEAD에 반영하기 까지의 상태(status)를 순차적으로 확인해 보겠습니다.
1. init 후 status
$ git init
Initialized empty Git repository in /home/oops4u/dev3/.git/
$ git branch
$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
branch 명령은 현재 작업중인 branch를 나타내는데 아직 branch가 생성되지 않았습니다.
branch 란 것은 말 그대로 나뭇가지처럼 프로젝트를 분리해서 작업할 수 있게 합니다.
기본적으로 master란 branch가 생성되며, 언제 생성되는지는 두고 보겠습니다.
status 명령은 현재 프로젝트의 버전 관리 상태를 나타내 주는 것입니다.
현재 branch(master)를 나타내고 있고, commit 할 수 있는 것이 아무것도 없다고 나타내고 있습니다.
2. file 생성 후 status
$ cat > file1.php
test
$ git branch
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file1.php
nothing added to commit but untracked files present (use "git add" to track)
file1.php란 파일을 생성했고 branch는 여전히 생성되지 않았습니다.
status에서 Untracked 는 버전 관리 대상이 아니라는 뜻입니다. tracked 는 반대로 버전 관리 대상이란 뜻이구요.
버전 관리 하려면 git add 명령으로 추가하라고 친절히 나타나 있으며, 여전히 commit 할 수 있는 것은 없다고 나타납니다.
앞으로 계속해서 사용될 단어입니다.
tracked, untracked, modified, unmodified...
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.