전체 치트시트

Git 명령어 치트시트

매일 쓰는 Git 명령어 빠른 참조: init, clone, branch, merge, rebase, reset, stash, 원격 작업, 히스토리 조회와 자주 쓰는 옵션, 실전 예시를 함께 정리했습니다.

명령어 31개

시작하기

git init

현재 디렉터리에 새 Git 저장소를 만듭니다.

git init my-project
git clone <url>

원격 저장소와 전체 히스토리를 로컬로 복제합니다.

--depth 1 얕은 클론(최신 커밋만); -b <branch> 특정 브랜치만 클론

git clone -b main --depth 1 https://github.com/user/repo.git
git config

사용자 이름, 이메일 등을 설정합니다. --global 은 모든 저장소에 적용됩니다.

git config --global user.name "Your Name" && git config --global user.email "[email protected]"

자주 쓰는 작업

git status

작업 트리의 상태(수정/스테이지/추적 안 됨)를 보여줍니다.

-s 짧은 형식; -b 브랜치 정보 표시

git status -sb
git add <file>

다음 커밋에 포함할 파일 변경을 스테이지합니다.

-A 모든 변경; -p 인터랙티브 헝크 선택; -u 추적된 파일만 스테이지

git add -p src/index.ts
git commit

스테이지한 변경을 메시지와 함께 커밋합니다.

-m 메시지 인라인; -a 추적 파일 스테이지 후 커밋; --amend 마지막 커밋 다시 쓰기

git commit -am "fix: 빈 입력 처리"
git diff

작업 트리/스테이지/커밋 간의 줄 단위 차이를 보여줍니다.

--staged 마지막 커밋과의 차이; <branch> 브랜치와 비교; --stat 요약만 표시

git diff --staged --stat
git restore <file>

커밋하지 않은 작업 트리 변경을 되돌립니다(--staged 를 함께 쓰면 스테이지를 해제).

git restore --staged src/index.ts

브랜치

git branch

브랜치를 조회·생성·삭제합니다.

-d 삭제; -D 강제 삭제; -m 이름 변경; -a 원격 브랜치도 함께 표시

git branch -m old-name new-name
git switch <branch>

다른 브랜치로 이동합니다. -c 를 쓰면 필요 시 브랜치를 만듭니다(checkout 의 현대적 대체).

git switch -c feature/login
git merge <branch>

다른 브랜치를 현재 브랜치에 병합합니다.

--no-ff 항상 병합 커밋 생성; --abort 진행 중인 병합 취소

git merge --no-ff feature/login
git rebase <branch>

현재 브랜치의 커밋을 다른 브랜치 끝으로 재배치해 선형 히스토리를 만듭니다.

-i 인터랙티브(squash/reword/reorder); --abort 취소; --continue 충돌 해결 후 계속

git rebase -i HEAD~3

원격

git remote -v

설정된 원격 저장소와 URL 을 나열합니다.

git remote add origin https://github.com/user/repo.git
git fetch

원격에서 객체와 참조를 내려받되 병합하지는 않습니다.

--prune 오래된 원격 추적 브랜치 제거; --all 모든 원격에서 가져오기

git fetch --prune origin
git pull

원격에서 가져온 뒤 현재 브랜치로 병합(또는 rebase)합니다.

--rebase merge 대신 rebase; --ff-only fast-forward 만 허용

git pull --rebase origin main
git push

로컬 커밋을 원격 저장소로 업로드합니다.

-u 업스트림 추적 설정; --force-with-lease 더 안전한 강제 푸시; --tags 태그도 함께 푸시

git push -u origin feature/login

되돌리기 · 수정

git reset

HEAD 를 다른 커밋으로 이동하며, 옵션으로 스테이지/작업 트리도 함께 조정합니다.

--soft 변경을 스테이지에 유지; --mixed(기본) 변경을 작업 트리에 유지; --hard 모두 폐기

git reset --hard HEAD~1
git revert <commit>

이전 커밋을 되돌리는 새 커밋을 만듭니다. 공유 히스토리에 안전합니다.

git revert HEAD
git commit --amend

가장 최근 커밋을 다시 씁니다: 메시지를 고치거나 빠뜨린 변경을 추가합니다.

--no-edit 기존 메시지 유지

git commit --amend --no-edit
git clean

작업 트리에서 추적되지 않는 파일을 삭제합니다.

-n 미리 보기; -f 강제; -d 디렉터리 포함; -x 무시된 파일 포함

git clean -ndx

히스토리 · 조회

git log

커밋 히스토리를 봅니다.

--oneline 한 줄 표시; --graph 브랜치 그래프; -p diff 표시; -n 개수 제한

git log --oneline --graph -15
git show <commit>

커밋의 메시지와 diff 를 보여줍니다. 태그나 파일에도 사용 가능(git show HEAD:file).

git show HEAD~2 --stat
git blame <file>

파일의 각 줄을 마지막으로 수정한 사람과 커밋을 표시합니다.

-L n,m 지정한 줄 범위로 제한

git blame -L 10,20 src/index.ts
git reflog

HEAD 의 이동 기록을 보여줍니다 — 잘못된 reset/rebase 후 잃어버린 커밋을 복구할 때 유용합니다.

git reflog -20

Stash

git stash

커밋하지 않은 변경을 임시로 치워 놓고 작업 트리를 깨끗하게 만듭니다.

-u 추적되지 않은 파일 포함; push -m 메시지; list 모든 stash 표시

git stash push -u -m "wip: 로그인 폼"
git stash pop

가장 최근 stash 를 다시 적용하고 stash 목록에서 제거합니다.

apply 적용 후 stash 항목을 유지

git stash apply stash@{1}

태그 · 릴리스

git tag

릴리스 지점을 표시하는 태그를 조회·생성·삭제합니다.

-a 주석 태그; -m 메시지; -d 삭제

git tag -a v1.2.0 -m "Release 1.2.0"
git describe --tags

현재 커밋에서 가장 가까운 태그와 그 거리(커밋 수)를 보여줍니다.

git describe --tags --always

고급

git cherry-pick <commit>

지정한 커밋의 변경을 현재 브랜치에 적용합니다.

-n 적용만 하고 커밋은 하지 않음; -x 커밋 메시지에 원본 해시 기록

git cherry-pick -x a1b2c3d
git bisect

이분 탐색으로 버그가 도입된 커밋을 찾습니다.

start / bad / good / run <cmd> / reset

git bisect start && git bisect bad && git bisect good v1.0.0
git worktree add <path> <branch>

같은 저장소를 공유하면서 다른 디렉터리에 다른 브랜치를 체크아웃합니다.

git worktree add ../hotfix hotfix/urgent-bug

치트시트 버전 1.0.0

Git 2.30+ 대응