Git 명령어 치트시트
스테이징부터 되돌리기까지 9개 시나리오와 실행 예시
명령어 69개
git init설정·초기화현재 디렉터리에 저장소 생성
git init
git clone <url>설정·초기화원격 저장소 복제
git clone git@github.com:user/repo.git
git config --global user.name "Ada"설정·초기화커미터 이름 설정, 한 번만 설정하면 계속 적용
git config --global user.name "Ada"
git config --global user.email "ada@example.com"설정·초기화커미터 이메일 설정, 커밋 기록에 포함됨
git config --global user.email "ada@example.com"
git config --global alias.st status설정·초기화명령 별칭 정의, 입력 절약
git config --global alias.lg "log --oneline --graph"
git remote add origin <url>설정·초기화로컬 저장소에 원격 주소 연결
git remote add origin git@github.com:user/repo.git
git status스테이징·커밋작업 트리와 인덱스 상태 확인
git status -sb
git add <file>스테이징·커밋지정 파일 변경을 스테이지에 추가
git add src/app.vue
git add -p스테이징·커밋대화식으로 코드 조각만 스테이징, 커밋 분할에 유용
git add -p
git commit -m "msg"스테이징·커밋스테이지된 내용 커밋
git commit -m "fix: 修正登录跳转"
git commit --amend스테이징·커밋마지막 커밋 수정(메시지 또는 내용)
git commit --amend --no-edit
git restore --staged <file>스테이징·커밋스테이지에서 제외하고 변경은 유지
git restore --staged src/app.vue
git rm --cached <file>스테이징·커밋추적만 중단하고 로컬 파일은 유지
git rm --cached .env
git mv <old> <new>스테이징·커밋파일 이름 변경을 Git에 기록
git mv old.ts new.ts
git branch브랜치·병합로컬 브랜치 목록, *가 현재 브랜치
git branch -vv
git switch -c <name>브랜치·병합새 브랜치를 만들고 전환
git switch -c feature/login
git switch <name>브랜치·병합기존 브랜치로 전환
git switch main
git merge <branch>브랜치·병합대상 브랜치를 현재 브랜치로 병합
git merge feature/login
git merge --no-ff <branch>브랜치·병합패스트포워드를 막아 병합 커밋을 남김
git merge --no-ff feature/login
git merge --squash <branch>브랜치·병합브랜치의 여러 커밋을 하나로 압축
git merge --squash feature/login
git rebase <branch>브랜치·병합내 커밋을 대상 브랜치 위로 재배치, 이력이 선형이 됨
git rebase main
git rebase -i HEAD~3브랜치·병합최근 세 커밋을 대화식으로 정리: 압축, 순서 변경, 메시지 수정
git rebase -i HEAD~3
git rebase --onto <new> <old> <branch>브랜치·병합커밋 범위를 새 기준으로 이동
git rebase --onto main old-base topic
git cherry-pick <commit>브랜치·병합특정 커밋만 현재 브랜치에 적용
git cherry-pick a1b2c3d
git branch -d <name>브랜치·병합병합된 브랜치 삭제, -D는 강제 삭제
git branch -d feature/login
git restore <file>되돌리기작업 트리 변경 폐기(커밋 전 자주 사용)
git restore src/app.vue
git reset --soft HEAD~1되돌리기마지막 커밋 취소, 변경은 스테이지에 유지
git reset --soft HEAD~1
git reset HEAD~1되돌리기커밋 취소 후 변경을 작업 트리로 되돌림
git reset HEAD~1
git reset --hard HEAD~1되돌리기마지막 커밋과 변경을 완전히 폐기(복구 불가, 위험)
git reset --hard HEAD~1
git revert <commit>되돌리기이력을 바꾸지 않고 반대 커밋을 생성
git revert a1b2c3d
git revert -m 1 <merge-commit>되돌리기병합 커밋 취소, -m으로 유지할 부모 지정
git revert -m 1 8f3c2a1
git checkout <commit> -- <file>되돌리기과거 커밋의 특정 파일만 복원
git checkout HEAD~2 -- config/nginx.conf
git reflog되돌리기HEAD 이동 이력 확인, 유실된 커밋 복구 수단
git reflog
git clean -fd되돌리기추적되지 않은 파일·디렉터리 삭제, 먼저 -n으로 확인
git clean -fdn
git stash스태시·정리현재 변경을 임시 보관해 작업 트리를 깨끗하게
git stash push -m "wip: 登录页"
git stash list스태시·정리모든 스태시 항목 조회
git stash list
git stash pop스태시·정리최근 스태시를 복원하고 목록에서 제거
git stash pop
git stash apply stash@{2}스태시·정리특정 스태시를 적용하고 목록은 유지
git stash apply stash@{2}git stash drop스태시·정리최근 스태시 삭제
git stash drop
git fetch --prune원격 협업원격 업데이트를 가져오고 삭제된 원격 브랜치 정리
git fetch --all --prune
git pull --rebase원격 협업리베이스 방식으로 가져와 불필요한 병합 커밋 방지
git pull --rebase
git push -u origin <branch>원격 협업새 브랜치를 푸시하고 업스트림 설정
git push -u origin feature/login
git push --force-with-lease원격 협업리베이스 후 강제 푸시, 원격에 새 커밋이 있으면 거부
git push --force-with-lease
git push origin --delete <branch>원격 협업원격 브랜치 삭제
git push origin --delete feature/login
git remote -v원격 협업원격 저장소 주소 확인
git remote -v
git remote set-url origin <url>원격 협업원격 저장소 주소 변경, 프로토콜 전환 시 사용
git remote set-url origin git@github.com:user/repo.git
git log --oneline --graph이력 조회한 줄 그래프 이력, 브랜치 구조 파악
git log --oneline --graph --decorate --all
git log -S "text"이력 조회특정 문자열을 추가·삭제한 커밋 검색
git log -S "checkToken" --oneline
git show <commit>이력 조회특정 커밋의 상세와 변경 확인
git show a1b2c3d --stat
git diff이력 조회작업 트리와 인덱스 차이
git diff --stat
git diff --staged이력 조회스테이지 내용과 마지막 커밋 차이
git diff --staged
git blame <file>이력 조회줄마다 마지막 작성자와 커밋 표시
git blame -L 20,40 src/app.vue
git shortlog -sn이력 조회작성자별 커밋 수 통계
git shortlog -sn --no-merges
git bisect start이력 조회버그를 만든 커밋을 이분 탐색으로 추적
git bisect start # git bisect bad / git bisect good <commit>
git tag -a v1.0.0 -m "release"태그·릴리스설명이 있는 주석 태그 생성
git tag -a v1.0.0 -m "first release"
git tag태그·릴리스모든 태그 목록
git tag -l "v1.*"
git push origin <tag>태그·릴리스특정 태그를 원격으로 푸시
git push origin v1.0.0
git worktree add ../hotfix main복구·고급한 저장소에서 여러 작업 디렉터리 사용, 병렬 개발
git worktree add ../repo-hotfix main
git submodule update --init --recursive복구·고급서브모듈 초기화 및 가져오기
git submodule update --init --recursive
git archive --format=zip HEAD -o src.zip복구·고급.git 없이 특정 커밋 스냅샷 내보내기
git archive --format=zip HEAD -o src.zip
git gc복구·고급저장소 정리와 압축, 용량이 커졌을 때 실행
git gc --aggressive --prune=now
git fsck복구·고급객체 무결성 검사, 저장소 손상 확인
git fsck --full
git range-diff복구·고급리베이스 전후 차이 비교, 변경 유실 확인
git range-diff main old-topic topic
git format-patch <range>복구·고급커밋을 패치 파일로 내보내기
git format-patch HEAD~3
git apply <patch>복구·고급커밋 없이 패치 파일 적용
git apply --check fix.patch
git filter-repo --path <dir>복구·고급경로를 제거하도록 이력 재작성, git-filter-repo 필요
git filter-repo --path secrets/ --invert-paths
뭔가 잘못됐거나 빠진 게 있나요?
피드백 보내기