Git 명령어 치트시트: 개발자 필수 50+ 명령어 총정리
Git 명령어 치트시트: 개발자 필수 50+ 명령어 총정리
50개 이상의 필수 Git 명령어를 예제와 함께 설명하는 완벽 치트시트. 기본 조작부터 고급 워크플로우, 브랜칭 전략, 트러블슈팅까지 2026년 최신 가이드.
서론: 모든 개발자에게 Git 마스터리가 필요한 이유
Git은 현대 소프트웨어 개발의 근간입니다. 개인 프로젝트를 혼자 진행하든, 여러 팀에서 수백 명의 개발자와 협업하든, Git은 모든 것을 체계적으로 관리하고, 추적하고, 되돌릴 수 있게 해주는 도구입니다. 2005년 리누스 토르발즈가 만들었지만, 2026년에도 Git은 버전 관리의 확고한 표준입니다.
하지만 많은 개발자들이 소수의 Git 명령어만 알고 있습니다. clone, commit, push, pull 정도를 사용하고, 가끔 되돌리는 방법을 검색하는 수준이죠. 이 치트시트는 그것을 바꾸기 위해 만들었습니다. 50개 이상의 필수 Git 명령어를 카테고리별로 정리하고, 실용적인 예제와 언제, 왜 사용하는지 설명합니다.
이 페이지를 북마크하세요 -- 자주 돌아오게 될 것입니다.
시작하기: 설정 및 초기화
git config
# 이름과 이메일 설정 (커밋에 필수)
git config --global user.name "이름"
git config --global user.email "your.email@example.com"
# 기본 브랜치명을 main으로 설정
git config --global init.defaultBranch main
# 기본 에디터 설정
git config --global core.editor "code --wait"
# 컬러 출력 활성화
git config --global color.ui auto
# 모든 설정 보기
git config --list
git init / git clone
# 새 저장소 초기화
git init
# 원격 저장소 복제
git clone https://github.com/user/repository.git
# SSH를 통한 복제 (일반 기여자에게 권장)
git clone git@github.com:user/repository.git
# 특정 디렉토리에 복제
git clone https://github.com/user/repository.git my-project
# 특정 브랜치만 복제
git clone --branch develop --single-branch https://github.com/user/repository.git
# 얕은 복제 (최근 히스토리만, 대규모 저장소에 유용)
git clone --depth 1 https://github.com/user/repository.git
일일 워크플로우: 매일 사용하는 명령어
git status
# 전체 상태 출력
git status
# 짧은 형식
git status -s
# 브랜치 정보와 함께 짧은 형식
git status -sb
짧은 형식 상태 코드:
??-- 추적되지 않는 파일A-- 스테이징에 추가된 새 파일M-- 수정된 파일D-- 삭제된 파일
git add
# 특정 파일 스테이징
git add filename.js
# 현재 디렉토리의 모든 변경사항 스테이징
git add .
# 전체 저장소의 모든 변경사항 스테이징
git add -A
# 파일의 일부만 대화식으로 스테이징
git add -p filename.js
# 수정된 파일만 스테이징 (새 추적되지 않는 파일 제외)
git add -u
git commit
# 메시지와 함께 커밋
git commit -m "사용자 인증 기능 추가"
# 여러 줄 메시지로 커밋
git commit -m "사용자 인증 기능 추가" -m "JWT 기반 인증과 리프레시 토큰 구현"
# 수정된 파일 스테이징과 커밋을 한 번에
git commit -am "네비게이션 버그 수정"
# 마지막 커밋 수정 (메시지 변경 또는 파일 추가)
git commit --amend -m "수정된 커밋 메시지"
# 빈 커밋 생성 (CI 트리거에 유용)
git commit --allow-empty -m "빌드 트리거"
좋은 커밋 메시지 작성법
type(scope): subject
body (선택사항)
footer (선택사항)
유형: feat, fix, docs, style, refactor, test, chore
git push / git pull
# 기본 리모트와 브랜치로 푸시
git push
# 업스트림 트래킹 설정과 함께 푸시
git push -u origin main
# 리베이스를 사용한 풀
git pull --rebase
# 특정 리모트에서 풀
git pull origin main
중요: --force 대신 항상 --force-with-lease를 사용하세요. 마지막 fetch 이후 리모트가 업데이트되지 않았는지 확인하여 다른 사람의 작업을 덮어쓰는 것을 방지합니다.
브랜칭과 머지
git branch
# 로컬 브랜치 목록
git branch
# 모든 브랜치 (로컬 + 리모트)
git branch -a
# 새 브랜치 생성
git branch feature/new-feature
# 브랜치 삭제 (안전 - 머지되지 않은 변경사항은 삭제 안 됨)
git branch -d feature/old-feature
# 강제 삭제
git branch -D feature/old-feature
# 현재 브랜치 이름 변경
git branch -m new-name
# 머지된 브랜치 목록
git branch --merged
git switch / git checkout
# 기존 브랜치로 전환 (최신 방식)
git switch main
# 새 브랜치 생성 후 전환 (최신 방식)
git switch -c feature/new-feature
# 파일을 마지막 커밋 상태로 복원
git restore filename.js
# 스테이징 취소
git restore --staged filename.js
git merge / git rebase
# 현재 브랜치에 다른 브랜치 머지
git merge feature/new-feature
# Fast-forward 없이 머지 (항상 머지 커밋 생성)
git merge --no-ff feature/new-feature
# 진행 중인 머지 중단
git merge --abort
# 현재 브랜치를 main 위로 리베이스
git rebase main
# 대화식 리베이스 (커밋 편집, 합치기, 재정렬)
git rebase -i HEAD~5
# 리베이스 중단
git rebase --abort
git cherry-pick
# 특정 커밋 적용
git cherry-pick abc1234
# 커밋하지 않고 체리픽 (변경사항만 스테이징)
git cherry-pick --no-commit abc1234
히스토리 및 변경사항 보기
git log
# 기본 로그
git log
# 한 줄 형식
git log --oneline
# 브랜치 그래프 표시
git log --oneline --graph --all
# 특정 작성자의 커밋
git log --author="홍길동"
# 날짜 범위의 커밋
git log --since="2026-01-01" --until="2026-03-01"
# 커밋 메시지 검색
git log --grep="버그 수정"
# 최근 10개 커밋
git log -10
# 커스텀 형식
git log --pretty=format:"%h %an %ar - %s"
git diff
# 스테이징되지 않은 변경사항
git diff
# 스테이징된 변경사항
git diff --staged
# 두 브랜치 간 차이
git diff main..feature/login
# 파일명만 표시
git diff --name-only
# 통계 (변경된 파일, 추가, 삭제)
git diff --stat
git blame
# 파일의 각 줄이 누가 마지막으로 수정했는지 표시
git blame filename.js
# 특정 줄 범위
git blame -L 10,20 filename.js
# 공백 변경 무시
git blame -w filename.js
되돌리기: 안전망
git restore / git reset
# 파일의 변경사항 취소
git restore filename.js
# 모든 변경사항 취소
git restore .
# 스테이징 취소
git restore --staged filename.js
# 소프트 리셋: HEAD 이동, 스테이징된 변경사항 유지
git reset --soft HEAD~1
# 혼합 리셋 (기본): HEAD 이동, 스테이징 취소, 작업 디렉토리 유지
git reset HEAD~1
# 하드 리셋: HEAD 이동, 모든 변경사항 폐기 (위험!)
git reset --hard HEAD~1
git revert / git stash
# 마지막 커밋을 되돌리는 새 커밋 생성
git revert HEAD
# 특정 커밋 되돌리기
git revert abc1234
# 현재 변경사항 임시 저장
git stash
# 설명과 함께 임시 저장
git stash push -m "진행 중: 로그인 폼"
# 추적되지 않는 파일도 포함
git stash -u
# 임시 저장 목록
git stash list
# 가장 최근 임시 저장 적용 후 제거
git stash pop
# 특정 임시 저장 적용
git stash apply stash@{2}
# 임시 저장 내용 보기
git stash show -p stash@{0}
고급 조작
git worktree
# 브랜치를 위한 새 작업 트리 생성
git worktree add ../feature-branch feature/login
# 모든 작업 트리 목록
git worktree list
# 작업 트리 제거
git worktree remove ../feature-branch
git bisect
# 이진 탐색 시작
git bisect start
git bisect bad # 현재 커밋이 문제가 있음
git bisect good abc1234 # 이 커밋은 정상이었음
# Git이 제시하는 각 커밋을 테스트 후:
git bisect good # 또는 git bisect bad
# 이진 탐색 종료
git bisect reset
# 테스트 스크립트로 자동화
git bisect run npm test
git reflog
# HEAD의 reflog 보기
git reflog
# 실수로 삭제한 커밋 복구
git reflog
# 필요한 커밋 해시를 찾은 후:
git reset --hard abc1234
유용한 별칭
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all --decorate"
git config --global alias.last "log -1 HEAD --stat"
git config --global alias.unstage "restore --staged"
git config --global alias.undo "reset HEAD~1 --mixed"
일반적인 워크플로우
기능 브랜치 워크플로우
# 1. main에서 시작
git switch main && git pull
# 2. 기능 브랜치 생성
git switch -c feature/user-profile
# 3. 변경사항 커밋
git add . && git commit -m "feat(profile): 사용자 아바타 업로드 추가"
# 4. main과 동기화
git fetch origin && git rebase origin/main
# 5. 푸시하고 PR 생성
git push -u origin feature/user-profile
# 6. PR 머지 후 정리
git switch main && git pull && git branch -d feature/user-profile
빠른 참조 표
| 작업 | 명령어 |
|---|---|
| 저장소 초기화 | git init |
| 저장소 복제 | git clone <url> |
| 상태 확인 | git status |
| 변경사항 스테이징 | git add . |
| 커밋 | git commit -m "메시지" |
| 푸시 | git push |
| 풀 | git pull |
| 브랜치 생성 | git switch -c <이름> |
| 브랜치 전환 | git switch <이름> |
| 브랜치 머지 | git merge <이름> |
| 로그 보기 | git log --oneline |
| 변경사항 보기 | git diff |
| 임시 저장 | git stash |
| 마지막 커밋 취소 | git reset --soft HEAD~1 |
| 변경사항 취소 | git restore <파일> |
| 릴리스 태그 | git tag -a v1.0 -m "메시지" |
2026년 Git 모범 사례
- 자주 커밋하고 정기적으로 푸시 -- 작은 커밋이 리뷰와 되돌리기에 용이
- 의미 있는 커밋 메시지 작성 -- Conventional Commits 형식 따르기
- 모든 작업에 브랜치 사용 -- main에 직접 커밋하지 않기
- 머지 전 리베이스 -- 깔끔하고 선형적인 히스토리 유지
.gitignore를 처음부터 사용 -- 생성된 파일, 시크릿, 의존성 커밋 방지- 커밋 전 diff 확인 --
git diff --staged로 커밋 내용 확인 - 공유 브랜치에 force-push 금지 -- 필요하면
--force-with-lease사용 - 릴리스에 태그 지정 -- 시맨틱 버저닝으로 릴리스 추적 가능
- SSH 키 사용 -- HTTPS 비밀번호보다 안전하고 편리
- reflog 사용법 학습 -- 문제 발생 시 안전망
결론
Git은 개발자로서 매일 사용하는 도구입니다. 이 명령어들을 마스터하면 더 빠르고, 자신감 있으며, 어떤 버전 관리 문제도 처리할 수 있게 됩니다.
이 치트시트를 북마크하고 필요할 때마다 참조하세요. 일상적인 개발 도구가 필요하다면 무료 온라인 도구를 확인해보세요 -- JSON 포맷팅, Base64 인코딩, 정규식 테스트, 해시 생성 등을 제공합니다.
관련 리소스
- 무료 개발자 도구 추천 -- 모든 개발자를 위한 필수 도구
- 2026년 개발자를 위한 AI 도구 -- AI가 개발을 변화시키는 방법
- API 보안 모범 사례 -- 코드와 API 보안
- 원격 근무 개발자 도구 2026 -- 분산 팀을 위한 도구