
Git 완벽 가이드
Git은 분산 버전 관리 시스템으로, 코드의 변경 이력을 추적하고 협업을 용이하게 합니다. 이 가이드에서는 실무에서 자주 사용하는 Git 명령어들을 단계별로 설명합니다.
1. Git 초기 설정
Git을 처음 설치한 후 사용자 정보를 설정해야 합니다.
# 사용자 이름 설정
git config --global user.name "Your Name"
# 이메일 설정
git config --global user.email "your.email@example.com"
# 설정 확인
git config --list
2. 저장소 생성 및 복제
새 저장소 생성
# 현재 디렉토리를 Git 저장소로 초기화
git init
# 특정 디렉토리를 Git 저장소로 초기화
git init project-name
기존 저장소 복제
# 원격 저장소 복제
git clone https://github.com/username/repository.git
# 특정 브랜치만 복제
git clone -b branch-name https://github.com/username/repository.git
3. 기본 작업 흐름
파일 상태 확인
# 작업 디렉토리 상태 확인
git status
# 간단한 형식으로 상태 확인
git status -s
파일 추가 (Staging)
# 특정 파일 추가
git add filename.txt
# 모든 변경된 파일 추가
git add .
# 특정 패턴의 파일 추가
git add *.js
변경사항 커밋
# 커밋 메시지와 함께 커밋
git commit -m "커밋 메시지"
# 추가와 커밋을 동시에 (이미 추적 중인 파일만)
git commit -am "커밋 메시지"
# 상세한 커밋 메시지 작성 (에디터 열림)
git commit
4. 변경 이력 확인
# 커밋 로그 확인
git log
# 한 줄로 간단하게 보기
git log --oneline
# 그래프 형태로 보기
git log --graph --oneline --all
# 특정 파일의 이력 보기
git log filename.txt
# 최근 n개의 커밋만 보기
git log -n 5
변경사항 비교
# 작업 디렉토리와 스테이징 영역 비교
git diff
# 스테이징 영역과 최근 커밋 비교
git diff --staged
# 두 커밋 간 비교
git diff commit1 commit2
5. 브랜치 관리
브랜치 생성 및 이동
# 브랜치 목록 확인
git branch
# 새 브랜치 생성
git branch feature-name
# 브랜치로 이동
git checkout feature-name
# 브랜치 생성과 동시에 이동
git checkout -b feature-name
# 최신 방식 (Git 2.23+)
git switch feature-name
git switch -c feature-name # 생성과 동시에 이동
브랜치 병합
# 현재 브랜치에 다른 브랜치 병합
git merge feature-name
# Fast-forward 없이 병합 (병합 커밋 생성)
git merge --no-ff feature-name
브랜치 삭제
# 로컬 브랜치 삭제
git branch -d feature-name
# 강제 삭제
git branch -D feature-name
# 원격 브랜치 삭제
git push origin --delete feature-name
6. 원격 저장소 작업
원격 저장소 관리
# 원격 저장소 확인
git remote -v
# 원격 저장소 추가
git remote add origin https://github.com/username/repository.git
# 원격 저장소 제거
git remote remove origin
Push & Pull
# 원격 저장소로 푸시
git push origin main
# 처음 푸시 시 업스트림 설정
git push -u origin main
# 원격 저장소에서 가져오기 (병합 포함)
git pull origin main
# 원격 저장소 변경사항만 가져오기 (병합 없음)
git fetch origin
7. 변경사항 되돌리기
작업 디렉토리 변경 취소
# 특정 파일의 변경사항 취소
git checkout -- filename.txt
# 최신 방식
git restore filename.txt
# 모든 변경사항 취소
git restore .
스테이징 취소
# 특정 파일의 스테이징 취소
git reset HEAD filename.txt
# 최신 방식
git restore --staged filename.txt
커밋 되돌리기
# 마지막 커밋 취소 (변경사항은 유지)
git reset --soft HEAD~1
# 마지막 커밋 취소 (변경사항은 스테이징 해제)
git reset HEAD~1
# 마지막 커밋 취소 (변경사항 완전 삭제)
git reset --hard HEAD~1
# 특정 커밋으로 되돌리기 (새 커밋 생성)
git revert commit-hash
8. Stash (임시 저장)
# 현재 변경사항 임시 저장
git stash
# 메시지와 함께 저장
git stash save "작업 중인 내용"
# stash 목록 확인
git stash list
# 가장 최근 stash 적용
git stash apply
# 가장 최근 stash 적용 후 삭제
git stash pop
# 특정 stash 적용
git stash apply stash@{0}
# stash 삭제
git stash drop stash@{0}
9. 태그 관리
# 태그 목록 확인
git tag
# 현재 커밋에 태그 생성
git tag v1.0.0
# 주석이 있는 태그 생성
git tag -a v1.0.0 -m "버전 1.0.0 릴리스"
# 특정 커밋에 태그 생성
git tag v1.0.0 commit-hash
# 원격 저장소에 태그 푸시
git push origin v1.0.0
# 모든 태그 푸시
git push origin --tags
# 태그 삭제
git tag -d v1.0.0
git push origin --delete v1.0.0
10. 고급 명령어
Rebase
# 현재 브랜치를 다른 브랜치 위로 재배치
git rebase main
# 대화형 rebase (최근 3개 커밋 수정)
git rebase -i HEAD~3
Cherry-pick
# 특정 커밋만 현재 브랜치에 적용
git cherry-pick commit-hash
파일 무시하기
# .gitignore 파일 생성 및 편집
echo "node_modules/" >> .gitignore
echo "*.log" >> .gitignore
11. 유용한 팁
커밋 메시지 수정
# 마지막 커밋 메시지 수정
git commit --amend -m "새로운 커밋 메시지"
# 마지막 커밋에 파일 추가
git add forgotten-file.txt
git commit --amend --no-edit
특정 파일의 변경 이력 추적
# 파일의 각 줄이 누구에 의해 언제 수정되었는지 확인
git blame filename.txt
변경사항 임시 보관
# 특정 파일만 커밋하고 나머지는 나중에
git add specific-file.txt
git commit -m "특정 파일만 커밋"
이 가이드는 Git의 핵심 명령어들을 다루고 있습니다. 실제 프로젝트에서는 상황에 맞게 명령어를 조합하여 사용하면 됩니다. 궁금한 명령어가 있거나 특정 시나리오에 대한 설명이 필요하면 언제든 물어보세요!
