cd $HOME/lab
git init repo1레포지토리
- git에 의해 관리되는 대상 디렉토리와 그 하위의 서브 디렉토리를 “워크트리(work tree)”라고 한다.
- 워크트리의 최상위 디렉토리에는
.git디렉토리가 존재하며, 이 디렉토리가 “레포지토리(repository)”이다. - 레포지토리는 git이 관리하는 모든 정보가 저장되는 곳이다.
init 명령
- 워크트리와 레포지토리를 생성하기 위해서는
git init명령어를 사용
init 명령 사용법
git init [레포지토리 이름]- 워크트리로 지정할 디렉토리 내부에서
git init명령어를 실행하면 해당 디렉토리가 워크트리가 되고 그 안에.git레포지토리 디렉토리가 생성된다. - 워크트리로 지정할 디렉토리의 상위 디렉토리에서
git init [레포지토리 이름]명령어를 실행하면 해당 이름의 서브디렉토리가 생성되며 이 디렉토리가 워크트리가 되고 그 안에.git레포지토리 디렉토리가 생성된다.
실습 1: 레포지토리 생성
- lab 디렉토리로 이동한 후
repo1이라는 이름의 레포지토리를 생성해보자.
Initialized empty Git repository in ~/lab/repo1/.git/
- repo1 디렉토리가 생성되고 그 안에 .git 디렉토리가 생성된 것을 확인할 수 있다.
ls -altotal 0
drwxr-xr-x@ 3 joelkim staff 96 Nov 25 12:53 .
drwxr-xr-x@ 41 joelkim staff 1312 Nov 25 12:53 ..
drwxr-xr-x@ 3 joelkim staff 96 Nov 25 12:53 repo1
cd repo1
ls -albash: cd: repo1: No such file or directory
total 0
drwxr-xr-x@ 3 joelkim staff 96 Nov 25 12:53 .
drwxr-xr-x@ 3 joelkim staff 96 Nov 25 12:53 ..
drwxr-xr-x@ 9 joelkim staff 288 Nov 25 12:53 .git
- 갓 생성된 .git 디렉토리의 구조는 다음과 같다.
tree .git.git
├── config
├── description
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── fsmonitor-watchman.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── pre-merge-commit.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ ├── pre-receive.sample
│ ├── prepare-commit-msg.sample
│ ├── push-to-checkout.sample
│ ├── sendemail-validate.sample
│ └── update.sample
├── info
│ └── exclude
├── objects
│ ├── info
│ └── pack
└── refs
├── heads
└── tags
9 directories, 18 files
.git 디렉토리의 구조
- .git 디렉토리 구조에 대한 공식적인 설명은 다음 링크에서 확인할 수 있다
- .git 디렉토리에는 다음과 같은 서브 디렉토리가 있을 수 있다.
objects디렉토리refs디렉토리logs디렉토리info디렉토리hooks디렉토리
objects 디렉토리
objects/pack 디렉토리
refs 디렉토리
중요 파일들
- 파일
- 텍스트 파일
config파일: 레포지토리 설정 파일description파일: 레포지토리 설명 파일COMMIT_EDITMSG파일: 커밋 메세지 작성용 임시 파일
- 바이너리 파일
index파일: 스테이지 정보 저장HEAD파일: 현재 체크아웃 위치 정보
- 텍스트 파일