Git 명령어 치트시트
매일 쓰는 Git 명령어 빠른 참조: init, clone, branch, merge, rebase, reset, stash, 원격 작업, 히스토리 조회와 자주 쓰는 옵션, 실전 예시를 함께 정리했습니다.
명령어 31개
시작하기
git init현재 디렉터리에 새 Git 저장소를 만듭니다.
git init my-projectgit clone <url>원격 저장소와 전체 히스토리를 로컬로 복제합니다.
--depth 1 얕은 클론(최신 커밋만); -b <branch> 특정 브랜치만 클론
git clone -b main --depth 1 https://github.com/user/repo.gitgit config사용자 이름, 이메일 등을 설정합니다. --global 은 모든 저장소에 적용됩니다.
git config --global user.name "Your Name" && git config --global user.email "[email protected]"자주 쓰는 작업
git status작업 트리의 상태(수정/스테이지/추적 안 됨)를 보여줍니다.
-s 짧은 형식; -b 브랜치 정보 표시
git status -sbgit add <file>다음 커밋에 포함할 파일 변경을 스테이지합니다.
-A 모든 변경; -p 인터랙티브 헝크 선택; -u 추적된 파일만 스테이지
git add -p src/index.tsgit commit스테이지한 변경을 메시지와 함께 커밋합니다.
-m 메시지 인라인; -a 추적 파일 스테이지 후 커밋; --amend 마지막 커밋 다시 쓰기
git commit -am "fix: 빈 입력 처리"git diff작업 트리/스테이지/커밋 간의 줄 단위 차이를 보여줍니다.
--staged 마지막 커밋과의 차이; <branch> 브랜치와 비교; --stat 요약만 표시
git diff --staged --statgit restore <file>커밋하지 않은 작업 트리 변경을 되돌립니다(--staged 를 함께 쓰면 스테이지를 해제).
git restore --staged src/index.ts브랜치
git branch브랜치를 조회·생성·삭제합니다.
-d 삭제; -D 강제 삭제; -m 이름 변경; -a 원격 브랜치도 함께 표시
git branch -m old-name new-namegit switch <branch>다른 브랜치로 이동합니다. -c 를 쓰면 필요 시 브랜치를 만듭니다(checkout 의 현대적 대체).
git switch -c feature/logingit merge <branch>다른 브랜치를 현재 브랜치에 병합합니다.
--no-ff 항상 병합 커밋 생성; --abort 진행 중인 병합 취소
git merge --no-ff feature/logingit 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.gitgit fetch원격에서 객체와 참조를 내려받되 병합하지는 않습니다.
--prune 오래된 원격 추적 브랜치 제거; --all 모든 원격에서 가져오기
git fetch --prune origingit pull원격에서 가져온 뒤 현재 브랜치로 병합(또는 rebase)합니다.
--rebase merge 대신 rebase; --ff-only fast-forward 만 허용
git pull --rebase origin maingit push로컬 커밋을 원격 저장소로 업로드합니다.
-u 업스트림 추적 설정; --force-with-lease 더 안전한 강제 푸시; --tags 태그도 함께 푸시
git push -u origin feature/login되돌리기 · 수정
git resetHEAD 를 다른 커밋으로 이동하며, 옵션으로 스테이지/작업 트리도 함께 조정합니다.
--soft 변경을 스테이지에 유지; --mixed(기본) 변경을 작업 트리에 유지; --hard 모두 폐기
git reset --hard HEAD~1git revert <commit>이전 커밋을 되돌리는 새 커밋을 만듭니다. 공유 히스토리에 안전합니다.
git revert HEADgit commit --amend가장 최근 커밋을 다시 씁니다: 메시지를 고치거나 빠뜨린 변경을 추가합니다.
--no-edit 기존 메시지 유지
git commit --amend --no-editgit clean작업 트리에서 추적되지 않는 파일을 삭제합니다.
-n 미리 보기; -f 강제; -d 디렉터리 포함; -x 무시된 파일 포함
git clean -ndx히스토리 · 조회
git log커밋 히스토리를 봅니다.
--oneline 한 줄 표시; --graph 브랜치 그래프; -p diff 표시; -n 개수 제한
git log --oneline --graph -15git show <commit>커밋의 메시지와 diff 를 보여줍니다. 태그나 파일에도 사용 가능(git show HEAD:file).
git show HEAD~2 --statgit blame <file>파일의 각 줄을 마지막으로 수정한 사람과 커밋을 표시합니다.
-L n,m 지정한 줄 범위로 제한
git blame -L 10,20 src/index.tsgit reflogHEAD 의 이동 기록을 보여줍니다 — 잘못된 reset/rebase 후 잃어버린 커밋을 복구할 때 유용합니다.
git reflog -20Stash
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 a1b2c3dgit bisect이분 탐색으로 버그가 도입된 커밋을 찾습니다.
start / bad / good / run <cmd> / reset
git bisect start && git bisect bad && git bisect good v1.0.0git worktree add <path> <branch>같은 저장소를 공유하면서 다른 디렉터리에 다른 브랜치를 체크아웃합니다.
git worktree add ../hotfix hotfix/urgent-bug치트시트 버전 1.0.0
Git 2.30+ 대응