'Local Repository'에 해당하는 글 2건

git init

Tool/Git 2013. 3. 20. 00:32

clone 이란 명령으로 원격 저장소의 모든 소스를 로컬 저장소로 복제할 수 있었습니다.
그 방법 외에도 로컬 저장소를 생성하는 방법으로 init 명령을 사용할 수 있습니다.
어느 디렉토리에서든 init 명령 하나로 해당 디렉토리에 .git 디렉토리를 생성하고 로컬 저장소가 될 수 있습니다.

 

$ pwd
/home/oops4u/dev2
$ git init
Initialized empty Git repository in /home/oops4u/dev2/.git/

 

init 란 명령으로 간단하게 로컬 저장소가 생성되었습니다.
이 로컬 저장소에 이미 기존 작업물이 존재하거나 새로 작업물을 만들어서 원격 저장소에 보내려 한다면,
우선적으로 로컬 저장소 상에서 버전 관리에 대한 준비를 마쳐야 합니다.(commit)

 

 

* git 의 로컬 저장소 구조는 다음과 같습니다.

 

 

  1. Working directory : 실제 파일 디렉토리(unstaging area)
  2. Index : 준비 영역(staging area)
  3. 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
손가락귀신
정신 못차리면, 벌 받는다.

,

git clone

Tool/Git 2013. 3. 19. 00:37

본인의 원격 저장소든 타인의 원격 저장소든 git@github.com:ggamzzak/test.git 같은 이미 생성된 원격 저장소 주소를 알아냈다면,
로컬 저장소(Local Repository)를 생성하고 원격 저장소로부터 소스를 복제하여 해당 프로젝트의 버전관리를 시작할 수 있습니다.
windows, linux, mac 등 어디든 로컬 저장소가 될 수 있고 특정 원격 저장소의 소스를 복제하는 방법은 clone 명령을 사용합니다.

 

git clone <원격 저장소 주소> <복제될 디렉토리>

 

원격 저장소로부터 소스를 복제한 후 계속해서 원격 저장소와 소스를 주고 받아야 함에 있어서 별칭을 사용할 수 있습니다.
매번 저 긴 원격 저장소 주소를 입력할 수는 없으니까요.
게다가 2개 이상의 원격 저장소로부터 버전 관리를 병행한다면 별칭은 더욱 중요합니다.
clone으로 복제를 실행하면 원격 저장소에 대하여 origin 이란 이름으로 자동 생성됩니다.
원격 저장소의 이름을 변경하고 싶다면 clone 명령시 -o name 옵션을 추가할 수 있습니다.

 

$ pwd
/home/oops4u/dev
$ git clone git@github.com:ggamzzak/test.git
Cloning into 'test'...
Enter passphrase for key '/home/oops4u/.ssh/id_rsa':
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
$ ls
test
$ cd test
$ ls -al
.git
README.md

 

clone 명령으로 원격저장소의 test 란 프로젝트를 복제하고나니 현재 디렉토리에 test 란 디렉토리가 생성되었습니다.
복제될 디렉토리를 현재 디렉토리(.)로 지정할 수도 있습니다.
그 안에는 복제된 디렉토리나 파일들이 있을 것이구요, .git 란 버전관리 디렉토리도 생성됩니다.

 

$ git remote
origin
$ git remote -v
origin  git@github.com:ggamzzak/test.git (fetch)
origin  git@github.com:ggamzzak/test.git (push)

 

remote 명령으로 origin 이란 원격 저장소 별칭이 생성된 것을 확인하였습니다.

 

clone 명령으로의 복제는 원격 저장소의 모든 커밋 히스토리까지 가져오는 것이 특징입니다.
히스토리는 log 명령으로 확인 가능합니다.

 

$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700

    removed unnecessary test code

commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700

    first commit


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,