[GitHub 100일 챌린지] Day 24 - 로컬 저장소 초기화하기
[GitHub 100일 챌린지] Day 24 - 로컬 저장소 초기화하기
100일 챌린지 Day 24 - 내 컴퓨터에 Git Repository를 만듭니다
배울 내용
- git init으로 저장소 만들기
- .git 폴더 이해하기
- 첫 파일 추가하기
Topic1. git init으로 저장소 만들기
git init = Git Repository 초기화
새 프로젝트 시작
해보기:
1
2
3
4
5
6
7
8
9
10
# 1. 프로젝트 폴더 생성
mkdir my-project
cd my-project
# 2. Git 저장소 초기화
git init
# 3. 확인
ls -la # Mac/Linux
dir /a # Windows
출력:
1
Initialized empty Git repository in /path/to/my-project/.git/
효과:
1
2
3
✅ .git 폴더 생성
✅ Git이 이 폴더를 추적하기 시작
✅ Repository가 됨
기존 폴더를 Repository로
해보기:
1
2
3
4
5
# 기존 프로젝트 폴더로 이동
cd existing-project
# Git 초기화
git init
주의:
1
2
3
⚠️ 이미 파일이 있어도 OK
⚠️ git init은 한 번만 실행
⚠️ 중복 실행해도 안전함
기본 브랜치 이름 지정
해보기:
1
2
3
4
5
# main 브랜치로 시작 (권장)
git init -b main
# 또는
git init --initial-branch=main
Day 23 설정 적용됨:
1
2
3
4
# Day 23에서 설정했다면:
git config --global init.defaultBranch main
# 이제 git init만 해도 main으로 생성
결과: 로컬 폴더가 Git Repository가 됩니다
Topic2. .git 폴더 이해하기
. git = Git의 모든 정보가 담긴 폴더
.git 폴더 구조
해보기:
1
2
3
4
5
# .git 폴더 내용 보기
ls -la .git
# 또는 트리 구조
tree .git # tree 명령어 설치 필요
주요 파일/폴더:
1
2
3
4
5
6
7
8
9
.git/
├── config # Repository 설정
├── description # 설명 (웹용)
├── HEAD # 현재 브랜치 포인터
├── hooks/ # Git Hook 스크립트
├── info/ # 제외 패턴
├── objects/ # 모든 커밋/파일 저장
├── refs/ # 브랜치/태그 참조
└── (추가 파일들)
HEAD 파일
해보기:
1
cat .git/HEAD
출력:
1
ref: refs/heads/main
의미:
1
현재 main 브랜치를 가리킴
config 파일
해보기:
1
cat .git/config
내용 예시:
1
2
3
4
5
6
[core]
repositoryformatversion = 0
filemode = true
bare = false
[remote "origin"]
url = https://github.com/username/repo.git
objects 폴더
Git의 데이터베이스:
1
2
3
4
5
6
7
objects/
├── 2a/ # 객체 해시 첫 2자리
│ └── 3f5b... # 나머지 해시
├── 4d/
└── ...
모든 커밋, 파일, 트리 저장
주의사항
1
2
3
4
5
6
7
8
⚠️⚠️⚠️ .git 폴더 삭제 금지! ⚠️⚠️⚠️
삭제하면:
❌ 모든 히스토리 사라짐
❌ 복구 불가능
❌ 일반 폴더로 변함
.git 폴더가 곧 Git Repository!
결과: .git 폴더의 역할을 이해합니다
Topic3. 첫 파일 추가하기
Repository를 만들었으니 파일을 추가해봅시다.
파일 생성
해보기:
1
2
3
4
5
6
7
# README.md 생성
echo "# My Project" > README.md
# 또는 에디터로
code README.md # VS Code
nano README.md # Nano
vim README.md # Vim
상태 확인
해보기:
1
git status
출력:
1
2
3
4
5
6
7
8
9
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present
의미:
1
2
3
🔴 README.md = Untracked (추적 안 됨)
→ Git이 아직 모르는 파일
→ git add 필요
git add로 스테이징
해보기:
1
2
git add README.md
git status
출력:
1
2
3
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
의미:
1
2
3
🟢 README.md = Staged (스테이징됨)
→ 커밋 준비 완료
→ git commit 가능
git commit으로 저장
해보기:
1
git commit -m "Initial commit"
출력:
1
2
3
[main (root-commit) a1b2c3d] Initial commit
1 file changed, 1 insertion(+)
create mode 100644 README.md
확인:
1
git status
출력:
1
2
On branch main
nothing to commit, working tree clean
의미:
1
2
✅ 모든 변경사항 커밋됨
✅ Working directory 깨끗함
히스토리 확인
해보기:
1
git log
출력:
1
2
3
4
5
commit a1b2c3d4e5f6...
Author: 홍길동 <hong@example.com>
Date: Mon Jan 24 09:00:00 2025 +0900
Initial commit
간단히 보기:
1
git log --oneline
출력:
1
a1b2c3d Initial commit
결과: 첫 파일을 추가하고 커밋했습니다
정리
완료 체크:
- git init으로 저장소를 만들었다
- .git 폴더의 역할을 이해했다
- 첫 파일을 커밋했다
핵심 명령어:
1
2
3
4
5
git init # Repository 초기화
git status # 상태 확인
git add 파일명 # 스테이징
git commit -m "메시지" # 커밋
git log # 히스토리 확인
워크플로우:
1
2
3
4
5
1. 폴더 생성 (mkdir)
2. Repository 초기화 (git init)
3. 파일 생성/수정
4. 스테이징 (git add)
5. 커밋 (git commit)
중요:
1
2
.git 폴더 = Git Repository
삭제하면 히스토리 전부 사라짐!
다음: Day 25 - Repository Clone하기 →
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
