[GitHub 100일 챌린지] Day 24 - 로컬 저장소 초기화하기
100일 챌린지 Day 24 - 내 컴퓨터에 Git Repository를 만듭니다
배울 내용
- git init으로 저장소 만들기
- .git 폴더 이해하기
- 첫 파일 추가하기
Topic1. git init으로 저장소 만들기
git init = Git Repository 초기화
git init은 현재 폴더에 Git 기록을 저장할 준비를 하는 명령입니다. 파일을 GitHub에 올리는 명령이 아니고, 자동으로 커밋을 만드는 명령도 아닙니다. 단지 “이 폴더를 이제부터 Git으로 관리하겠다”고 선언하는 단계입니다.
실행하기 전에 먼저 현재 위치를 확인하세요.
1
2
pwd # 현재 폴더 확인
ls # 폴더 안 파일 확인
엉뚱한 상위 폴더에서 git init을 실행하면 원하지 않는 범위까지 Git 저장소가 될 수 있습니다.
새 프로젝트 시작
해보기:
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가 됩니다
초기화 직후에는 아래 두 명령으로 상태를 확인하세요.
1
2
git status --short
git branch --show-current
git status --short에 파일이 너무 많이 보이면, 저장소로 만들 위치가 잘못됐거나 .gitignore를 먼저 준비해야 할 수 있습니다.
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 폴더는 일반적으로 직접 수정하지 않습니다. 설정을 바꾸고 싶다면 git config, 브랜치를 보고 싶다면 git branch, 히스토리를 보고 싶다면 git log처럼 Git 명령어를 통해 다루세요.
실수로 잘못된 위치에서 git init을 했다면 바로 삭제하기 전에 먼저 위치와 상태를 확인합니다.
1
2
pwd
git status --short
아직 커밋도 없고, 정말 잘못 만든 빈 저장소라면 .git 폴더를 삭제해 일반 폴더로 되돌릴 수 있습니다. 하지만 기존 프로젝트의 .git인지 확신이 없다면 삭제하지 마세요.
결과: .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: 홍길동 <[email protected]>
Date: Mon Jan 24 09:00:00 2025 +0900
Initial commit
간단히 보기:
1
git log --oneline
출력:
1
a1b2c3d Initial commit
결과: 첫 파일을 추가하고 커밋했습니다
첫 커밋 직전에는 반드시 diff를 확인하는 습관을 들이세요.
1
2
3
4
git diff
git add README.md
git diff --staged
git commit -m "Add initial README"
git diff는 아직 스테이징하지 않은 변경을 보여주고, git diff --staged는 커밋에 들어갈 내용을 보여줍니다. 초보일수록 이 두 단계가 실수를 많이 줄여줍니다.
자주 하는 실수
| 상황 | 원인 | 해결 |
|---|---|---|
| 파일이 너무 많이 보임 | 홈 폴더나 상위 폴더에서 git init 실행 | 위치 확인 후 올바른 프로젝트 폴더에서 다시 시작 |
nothing to commit이 나옴 | 파일을 만들지 않았거나 이미 커밋됨 | git status --short로 상태 확인 |
.env가 보임 | .gitignore 누락 | .gitignore 추가 후 git rm --cached .env |
| 브랜치 이름이 master임 | 기본 브랜치 설정 미적용 | git branch -M main |
Git은 조용히 많은 일을 처리합니다. 이상하다고 느껴질 때는 새 명령을 치기보다 git status부터 보는 습관을 들이세요.
정리
완료 체크:
- git init으로 저장소를 만들었다
- .git 폴더의 역할을 이해했다
- 첫 파일을 커밋했다
- 초기화 위치를
pwd로 확인했다 - 커밋 전
git diff --staged를 확인했다
핵심 명령어:
1
2
3
4
5
6
git init # Repository 초기화
git status # 상태 확인
git add 파일명 # 스테이징
git commit -m "메시지" # 커밋
git log # 히스토리 확인
git branch -M main # 현재 브랜치 이름 변경
워크플로우:
1
2
3
4
5
1. 폴더 생성 (mkdir)
2. Repository 초기화 (git init)
3. 파일 생성/수정
4. 스테이징 (git add)
5. 커밋 (git commit)
중요:
1
2
.git 폴더 = Git Repository
삭제하면 히스토리 전부 사라짐!
