설정 및 구성 ⤢ git config모든 저장소에 한 번만 이름, 이메일, 편집기를 설정합니다. git config --global user.name "Ada" ⤢ git config --global alias자주 입력하는 명령에 단축 이름을 지정합니다. git config --global alias.co checkout ⤢ git init현재 폴더에 새 저장소를 만듭니다. git init ⤢ git clone원격 저장소를 내 컴퓨터로 복사합니다. git clone git@github.com:org/repo.git ⤢ git clone --depth단일 브랜치의 최신 커밋만 복사합니다. git clone --depth 1 --single-branch git@github.com:org/repo.git 스냅샷 기본 ⤢ git status스테이지됨, 수정됨, 추적 안 됨 상태를 보여줍니다. git status -sb ⤢ git add변경 사항을 스테이지에 올려 다음 커밋에 포함시킵니다. git add src/app.ts ⤢ git add -p변경 사항을 조각(hunk) 단위로 검토하고 수락한 것만 스테이지합니다. git add -p src/app.ts ⤢ git add -u추적 중인 모든 파일의 변경 사항을 새 파일 추가 없이 스테이지합니다. git add -u ⤢ git commit스테이지된 변경 사항을 새 커밋으로 기록합니다. git commit -m "fix: null check" ⤢ git commit --amend마지막 커밋을 수정된 커밋으로 교체합니다. git commit --amend -m "fix: handle empty input" ⤢ git diff스테이지되지 않은 변경 사항, 또는 --staged로 스테이지된 변경 사항을 보여줍니다. git diff --staged ⤢ git diff HEAD마지막 커밋 이후의 모든 변경 사항을 스테이지 여부와 관계없이 보여줍니다. git diff HEAD 브랜치와 병합 ⤢ git branch브랜치를 나열, 생성, 삭제합니다. git branch feature-x ⤢ git branch -d병합된 브랜치를 삭제합니다 (-D는 강제 삭제, -a는 모든 브랜치 표시). git branch -d feature-x ⤢ git switch브랜치를 전환합니다 (checkout의 현대적 대체 명령). git switch feature-x ⤢ git switch -c새 브랜치를 만들고 한 번에 전환합니다. git switch -c feature-x ⤢ git checkout브랜치를 전환하거나 파일을 복원합니다 (오래되고 폭넓은 명령). git checkout feature-x ⤢ git merge다른 브랜치의 변경 사항을 현재 브랜치로 가져옵니다. git merge feature-x ⤢ git merge --abort충돌 중인 병합을 취소하고 브랜치를 이전 상태로 되돌립니다. git merge --abort ⤢ git rebase현재 브랜치의 커밋을 다른 브랜치 위에 다시 재생합니다. git rebase main ⤢ git rebase -i커밋을 재생하면서 합치기(squash), 재정렬, 편집을 합니다. git rebase -i main ⤢ git cherry-pick다른 브랜치의 단일 커밋을 이 브랜치로 복사합니다. git cherry-pick a1b2c3d ⤢ git tag커밋에 버전 같은 읽기 쉬운 라벨을 붙입니다. git tag -a v1.2.0 ⤢ git worktree다른 브랜치를 별도 폴더에서 동시에 체크아웃합니다. git worktree add ../repo-feature feature-x 히스토리 조회 ⤢ git log커밋 히스토리를 순서대로 살펴봅니다. git log --oneline --graph --decorate ⤢ git log --all현재 브랜치뿐 아니라 모든 브랜치의 히스토리를 살펴봅니다. git log --oneline --graph --all ⤢ git show단일 커밋의 전체 diff와 메시지를 보여줍니다. git show HEAD ⤢ git blame파일의 각 줄을 마지막으로 변경한 사람을 보여줍니다. git blame src/app.ts ⤢ git reflogHEAD가 가리켰던 모든 커밋을 버려진 것까지 보여줍니다. git reflog ⤢ git bisect히스토리를 반씩 나눠 검색해 문제를 일으킨 커밋을 찾습니다. git bisect start ⤢ git shortlog커밋을 작성자별로 요약합니다. git shortlog -sn ⤢ git describe가장 가까운 태그부터 세어 현재 커밋에 이름을 붙입니다. git describe --tags 원격 협업 ⤢ git remote원격 저장소를 나열하거나 추가합니다. git remote add origin <url> ⤢ git remote -v원격 목록을 fetch·push URL과 함께 보여줍니다. git remote -v ⤢ git fetch브랜치를 바꾸지 않고 원격 변경 사항을 내려받습니다. git fetch origin ⤢ git fetch --prune원격 변경 사항을 내려받고 삭제된 원격 브랜치의 ref를 정리합니다. git fetch --prune ⤢ git pull현재 브랜치의 원격 변경 사항을 내려받아 병합합니다. git pull --rebase ⤢ git push로컬 커밋을 원격으로 보냅니다. git push -u origin feature-x ⤢ git push --force-with-lease원격 브랜치를 덮어쓰되, 누군가 먼저 push했으면 실패합니다. git push --force-with-lease origin feature-x 변경 되돌리기 ⤢ git restore워킹 트리 변경 사항을 버리거나 스테이지에서 해제합니다. git restore src/app.ts ⤢ git restore --staged파일을 스테이지에서 해제하되 수정 내용은 워킹 트리에 유지합니다. git restore --staged src/app.ts ⤢ git reset현재 브랜치 끝과 선택적으로 인덱스를 이동합니다. git reset --hard HEAD~1 ⤢ git revert이전 커밋을 되돌리는 새 커밋을 추가합니다 (공유해도 안전). git revert HEAD ⤢ git clean추적되지 않는 파일과 폴더를 삭제합니다. git clean -fd 스태시 ⤢ git stash커밋하지 않은 작업을 저장하고 워킹 트리를 초기화합니다. git stash -u ⤢ git stash list저장한 모든 스태시를 보여줍니다. git stash list ⤢ git stash apply스태시를 다시 적용하고 목록에 유지합니다. git stash apply stash@{1} ⤢ git stash drop더 이상 필요 없는 스태시를 삭제합니다. git stash drop stash@{1} ⤢ git stash pop가장 최근 스태시를 다시 적용하고 목록에서 제거합니다. git stash pop 파일과 서브모듈 ⤢ git mv파일을 이동하거나 이름을 바꾸고 변경을 스테이지합니다. git mv old.ts src/new.ts ⤢ git rm파일을 삭제하고 삭제를 스테이지합니다. git rm src/old.ts ⤢ git submodule다른 저장소를 이 저장소 안의 폴더로 추적합니다. git submodule add git@github.com:org/lib.git lib ⤢ git sparse-checkout큰 저장소에서 지정한 폴더만 체크아웃합니다. git sparse-checkout set src docs ⤢ git archive커밋의 트리를 tar 또는 zip 파일로 내보냅니다. git archive -o repo.zip HEAD