Git 사용법
1. Git이란?
Git은 분산 버전 관리 시스템. 코드 변경 이력 관리 및 협업에 사용.
2. Git 설치
Windows
Git 공식 다운로드 → 실행 후 Git Bash 사용.
macOS
brew install git
Linux
sudo apt-get install git # Debian/Ubuntu
sudo yum install git # CentOS/RHEL
3. Git 기본 설정
git config --global user.name "홍길동"
git config --global user.email "hong@example.com"
git config --global core.editor "code --wait"
설정 확인:
git config --list
4. Git 기본 명령어
저장소 생성
git init
기존 저장소 클론
git clone <https://github.com/사용자명/저장소명.git>
특정 브랜치만 지정해서 클론(Clone)하기
git clone -b <브랜치명> <원격_저장소_URL>
파일 상태 확인
git status
변경사항 추적
git add 파일명
git add . # 모든 변경 파일 추가
커밋 생성
git commit -m "커밋 메시지"
커밋 로그 확인
git log
5. 브랜치 관리
브랜치 생성
git branch 브랜치명
브랜치 이동
git checkout 브랜치명
브랜치 생성 후 이동
git checkout -b 브랜치명
브랜치 목록 확인
git branch
브랜치 병합
git checkout main
git merge 브랜치명
6. 원격 저장소 연결
원격 저장소 추가
git remote add origin <https://github.com/사용자명/저장소명.git>
원격 저장소 목록 확인
git remote -v
7. Push && Pull
Push
git push origin 브랜치명
Pull
git pull origin 브랜치명
8. 프로젝트 초기화 후 GitHub에 업로드
cd 프로젝트폴더
git init
git add .
git commit -m "프로젝트 초기 커밋"
git branch -M main
git remote add origin <https://github.com/사용자명/저장소명.git>
git push -u origin main
9. .gitignore 설정
.gitignore는 Git이 추적하지 않을 파일/디렉토리 목록을 설정하는 파일.
.gitignore 예시
1. 빌드 파일 제외
/dist
/build
2. IDE 설정 제외
.vscode/
.idea/
3. 운영체제 파일 제외
.DS_Store
Thumbs.db
.gitignore 사용법
- 파일 생성
- .gitignore 파일을 프로젝트 루트에 생성.
- 추적하지 않을 항목 지정
# 빌드 파일 제외 /dist /build # IDE 설정 제외 .vscode/ .idea/ # 운영체제 파일 제외 .DS_Store Thumbs.db - .gitignore에 아래와 같이 작성.
- .gitignore 커밋
- git add .gitignore git commit -m "Add .gitignore file"
- 이미 추적 중인 파일 제외
git rm --cached .DS_Store git commit -m "Stop tracking .DS_Store" - 이미 Git이 추적 중인 파일을 제외하려면 git rm --cached 사용.
- 정규식 사용
- 특정 확장자 파일 제외:
- *.log
- 특정 폴더 제외:
- temp/
- 특정 파일만 제외:
- config.yaml
- 하위 폴더의 파일 제외:
- **/debug.log
.gitignore 규칙
- 주석: # 뒤에 주석 작성.
- # 빌드 파일 제외 /dist
- 와일드카드: 로 패턴 지정.
- *.log
- 루트 디렉토리 지정: /로 루트 디렉토리에서만 적용.
- /node_modules
- 폴더 제외: 폴더 이름 뒤에 / 추가.
- /temp/
- 파일 다시 추적: !로 제외된 파일을 다시 추적.
- *.log !debug.log
10. Git Reset 옵션 정리 (-mixed, -soft, -hard)
Git에서 reset은 커밋을 되돌릴 때 사용하는 명령어다.
옵션에 따라 커밋, 스테이징 영역, 작업 디렉토리 중 어떤 걸 유지할지 달라진다.
1. --mixed (기본값)
- 커밋과 스테이징을 되돌림
- 파일 수정 내용은 유지됨 (작업 디렉토리는 그대로)
git reset --mixed HEAD~1
# 또는 그냥
git reset HEAD~1
→ 커밋과 git add는 취소되지만 파일 내용은 그대로 남아 있음
2. --soft
- 커밋만 되돌림
- git add된 상태(스테이징)와 작업 파일은 그대로 유지됨
git reset --soft HEAD~1
→ 마지막 커밋만 취소되고, 변경사항은 git add된 상태로 남음
3. --hard
- 커밋, 스테이징, 작업 디렉토리 전부 되돌림
- 현재 작업 중인 모든 파일 변경사항도 삭제됨 (복구 불가)
git reset --hard HEAD~1
→ 완전히 해당 커밋 시점으로 되돌아감. 신중하게 사용해야 함
💡 HEAD^의 의미
- HEAD^ = 현재 커밋의 바로 전 커밋
- HEAD~1과 동일한 의미
git reset HEAD^
→ --mixed 옵션이 기본이라 git reset HEAD^는 git reset --mixed HEAD^와 같음
📝 요약 표
옵션 커밋 삭제 스테이징 제거 파일 수정 보존 설명
| --mixed | ✅ | ✅ | ✅ | 커밋 + git add 취소 (기본값) |
| --soft | ✅ | ❌ | ✅ | 커밋만 취소, git add는 유지 |
| --hard | ✅ | ✅ | ❌ | 완전 초기화, 되돌릴 수 없음 |
10. Git 유용한 명령어
명령어 설명
| git diff | 변경된 코드 비교 |
| git reset 파일명 | git add 이전으로 되돌리기 |
| git reset --soft HEAD^ | 마지막 커밋을 스테이징 상태로 되돌리기 |
| git reset --mixed HEAD^ | 마지막 커밋을 작업 디렉토리로 되돌리기 |
| git reset --hard HEAD^ | 마지막 커밋과 모든 변경사항을 삭제 |
| git log --oneline | 간단한 로그 보기 |
| git stash | 작업 임시 저장 |
| git stash pop | 임시 저장한 작업 복원 |
| git clean -fd | 추적되지 않은 파일 삭제 |