Git 핵심 치트 시트: 명령어, 워크플로 및 모범 사례
Git은 세계에서 가장 널리 사용되는 버전 관리 시스템입니다. 1인 개발자든 대규모 팀의 일원이든, Git을 마스터하는 것은 코드 이력을 관리하고 효율적으로 협업하는 데 필수적입니다.
이 치트 시트를 일반적인 Git 명령어와 워크플로를 위한 빠른 참조 가이드로 활용하세요.
1. 기본 워크플로
변경 사항을 만들고 저장소에 저장하는 핵심 사이클입니다.
| 명령어 | 설명 | 예시 |
|---|---|---|
git init |
로컬에 새로운 Git 저장소 초기화 | git init |
git clone |
원격 저장소 복제 | git clone [url] |
git add |
다음 커밋을 위해 변경 사항 스테이징 | git add . (모두 추가) |
git commit |
스테이징된 변경 사항을 이력에 저장 | git commit -m "feat: login" |
git status |
작업 디렉토리 상태 표시 | git status |
git push |
로컬 커밋을 원격 저장소에 업로드 | git push origin main |
git pull |
원격에서 변경 사항을 가져와 머지(병합) | git pull origin main |
git fetch |
원격에서 변경 사항 다운로드 (머지 안 함) | git fetch origin |
2. 브랜치(Branching) 및 머지(Merging)
브랜치를 사용하면 서로 다른 기능이나 수정을 독립적으로 작업할 수 있습니다.
- 브랜치 생성:
git branch [name] - 브랜치 전환:
git checkout [name](또는git switch [name]) - 생성 및 전환:
git checkout -b [name] - 브랜치 머지:
git merge [name]([name] 브랜치를 현재 브랜치로 머지) - 리베이스(Rebase):
git rebase [name](커밋을 [name] 브랜치의 끝으로 재적용) - 브랜치 삭제:
git branch -d [name]
3. 변경 사항 취소하기
실수를 수정하거나 이전 상태로 되돌리는 방법입니다.
- 커밋 되돌리기:
git revert [commit-hash](변경 사항을 되돌리는 새로운 커밋 생성) - 리셋 (Soft):
git reset --soft HEAD~1(커밋만 취소, 변경 사항은 스테이징 상태로 유지) - 리셋 (Hard):
git reset --hard HEAD~1(커밋 취소 및 모든 변경 사항 삭제! 주의 요망) - 스태시(Stash):
git stash(커밋하지 않은 변경 사항을 임시로 숨김) - 스태시 복구:
git stash pop(숨겼던 변경 사항을 다시 가져옴)
4. 검사 및 디버깅
이력을 확인하고 버그를 찾는 도구들입니다.
| 명령어 | 설명 |
|---|---|
git log |
커밋 이력 표시 |
git diff |
커밋 간 또는 작업 디렉토리의 차이점 표시 |
git blame [file] |
파일의 각 행을 누가 수정했는지 표시 |
git show [commit] |
특정 커밋의 상세 정보 표시 |
git bisect |
이진 탐색을 사용하여 버그를 유발한 커밋 찾기 |
자주 묻는 질문 (FAQ)
Q: Merge(머지) vs Rebase(리베이스): 무엇을 사용해야 하나요?
A: Merge는 새로운 '머지 커밋'을 생성하며 전체 이력과 시간 순서를 보존합니다. Rebase는 커밋을 대상 브랜치의 끝으로 이동시켜 이력을 재작성하므로, 더 깨끗하고 선형적인 이력을 만듭니다. 원칙: 공개된 브랜치에서는 리베이스하지 마세요. 푸시 전 로컬 작업을 정리할 때만 사용하세요.
Q: 머지 충돌(Conflict)을 어떻게 해결하나요?
A: 충돌이 발생하면 Git이 파일을 표시합니다. 1. 파일을 열어 <<<<<<<, =======, >>>>>>> 표시를 찾으세요. 2. 원하는 코드를 남기도록 편집하세요. 3. git add [file] 실행. 4. git commit 실행.
Q: "detached HEAD"란 무엇인가요?
A: 브랜치가 아닌 특정 커밋이나 태그를 체크아웃했다는 의미입니다. 현재 어떤 브랜치에도 속해 있지 않은 상태입니다. 여기서 새로 커밋을 해도 다른 곳으로 이동하면 커밋이 사라질 수 있습니다. 변경 사항을 저장하려면 git checkout -b new-branch-name을 실행하세요.
Q: .gitignore의 모범 사례는 무엇인가요?
A: 환경 변수(.env), 빌드 결과물(dist/, build/), 의존성 폴더(node_modules/), OS 관련 파일(.DS_Store) 등은 항상 제외해야 합니다. 사용하는 언어나 프레임워크에 맞는 공식 템플릿(GitHub 등에서 제공)을 사용하는 것이 좋습니다.
Tool3M 관련 정보
- 홈페이지: 생산성을 높여줄 더 많은 개발 도구와 참조 자료를 확인해 보세요.