개발자에게 Git은 단순한 툴이 아닌 필수적인 업무 인프라다.
'최종.ppt', '진짜_최종.ppt'와 같은 비효율적인 파일 관리를 벗어나, 코드의 변경 이력을 체계적으로 추적하고 팀원들과 안전하게 협업하기 위함이다.
Git은 작업 공간을 크게 세 가지 영역으로 나누어 관리한다.
| 용어 | 설명 |
|---|---|
| Working Tree | 작업자가 현재 로컬에서 코드를 작성하고 수정하는 실제 디렉터리 공간. |
| Staging Area | 다음 커밋에 포함할 변경 사항들을 선별해 올려두는 임시 대기 영역 |
| Repository | 커밋(버전) 히스토리가 완전히 영구 기록되는 저장소 (.git 디렉터리). |
| Commit | Staging Area에 올라간 파일들의 스냅샷을 영구적으로 저장소에 확정·기록하는 작업. |
| HEAD | 현재 작업 중인 브랜치의 가장 최신 커밋을 가리키는 포인터. |
| Branch | 독립적으로 작업을 진행하기 위한 일종의 분기점(가지). 기존 코드에 영향을 주지 않고 안전하게 새 기능을 개발할 수 있다. |
| Merge | 특정 브랜치에서 완료된 작업 내역을 대상 브랜치(main 등)로 합치는 작업. |
| 명령어 | 기능 및 사용법 |
|---|---|
git init | 현재 폴더에 새로운 Git 로컬 저장소를 초기화 (.git 생성) |
git status | 작업 디렉터리와 Staging Area의 파일 상태(수정, 추적 여부) 확인 |
git add <파일명> | 특정 파일의 변경 사항을 Staging Area에 추가 |
git add . | 현재 디렉터리 이하의 모든 변경 파일을 Staging Area에 일괄 추가 |
git commit -m "메시지" | Staging Area의 파일들을 메시지와 함께 새 커밋으로 확정 |
git log | 현재 브랜치의 커밋 히스토리(작성자, 날짜, 해시값 등) 확인 |
| 명령어 | 기능 및 사용법 |
|---|---|
git branch | 로컬 브랜치 목록 확인 |
git branch <이름> | 새 브랜치 생성 |
git switch <이름> / git checkout <이름> | 해당 브랜치로 이동 |
git switch -c <이름> / git checkout -b <이름> | 브랜치 생성과 동시에 해당 브랜치로 이동 |
git branch -d <이름> | 특정 브랜치 삭제 |
git merge <브랜치> | 현재 위치한 브랜치에 대상 브랜치의 변경 내역을 병합 |
| 명령어 | 기능 및 사용법 |
|---|---|
git remote -v | 현재 연결된 원격 저장소 주소 목록 확인 |
git remote add origin <URL> | 로컬 저장소에 원격 저장소(origin) 등록 |
git push <저장소명> <브랜치명> | 로컬 커밋 내역을 원격 저장소의 특정 브랜치로 업로드 |
git pull <저장소명> <브랜치명> | 원격 저장소의 최신 커밋을 가져와 현재 로컬 브랜치와 자동으로 병합 |
git fetch origin | 원격 저장소의 최신 이력만 다운로드 (자동 병합하지 않음) |
git clone <URL> | 원격 저장소 전체를 로컬에 복제 |
| 명령어 | 기능 및 사용법 |
|---|---|
git stash | 아직 커밋하지 않은 작업 내역을 임시 스택 공간에 안전하게 저장 |
git stash pop | 스택에 임시 보관해 둔 작업 내역을 다시 꺼내와 작업 트리에 복원 |
# 1. 로컬 저장소 초기화
git init
# 2. 원격 저장소(GitHub Repository) 연결
git remote add origin https://github.com/사용자이름/저장소이름.git
# 3. 작업 파일 스테이징 및 첫 커밋
git add .
git commit -m "feat: 첫 커밋 및 프로젝트 초기화"
# 4. 기본 브랜치(main 또는 master)로 원격 저장소에 푸시
git branch -M main
git push -u origin main
주의: 하위 디렉터리 내에 실수로
.git폴더가 중첩 생성된 경우 Git 서브모듈 충돌이 일어나 파일 추적이 비정상적으로 동작할 수 있다. 의도하지 않은.git이 하위에 있다면 해당 폴더를 삭제(rm -rf .git)한 뒤 다시 add해야 한다.
# 저장소 복제
git clone https://github.com/사용자이름/저장소이름.git
cd 저장소이름
# git에는 용량이 큰 node_modules를 올리지 않으므로(보통 .gitignore 처리)
# package.json에 명시된 의존 패키지를 직접 설치해주어야 한다.
yarn install
# 또는 npm install
# 개발 서버 실행
yarn dev
-p 플래그로 포트를 분리한다.yarn dev -p 3001
협업 시 오픈소스 기여나 권한 분리를 위해 fork와 clone을 정확히 구분해야 한다.