git
Git 2.30+매일 쓰는 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관련 명령어 치트시트
상표 및 사용 안내
본 명령줄 도구 치트시트 모음은 오픈 커뮤니티 참고 자료입니다. 본 문서에서 언급되는 도구의 명칭, 로고, 상표(예: Git™, Docker™, Kubernetes®, kubectl, PostgreSQL®, MySQL®, Redis™, MongoDB®, Linux™, PowerShell™, Vim™ 등)는 각 권리자의 자산이며, 본 문서에서는 식별 및 참고 목적のみで 사용됩니다.
본 치트시트의 모든 내용은 독립적으로 작성된 단순화된 자체 완결형 참고 자료이며, 어떠한 공식 문서와도 계열·인정·출처 관계가 없습니다. 명령 목록, 플래그 설명, 예제는 모두 저자의 원본 단순화이며, 권위 있는 정보가 필요한 경우 각 도구의 공식 문서를 참조하시기 바랍니다.
명령 구문 및 옵션 플래그는 도구 버전에 따라 다를 수 있습니다. 표시되는 버전 태그는 안정 릴리스를 반영하며, 다른 버전에서는 동작이 다를 수 있습니다. 본 치트시트는 상표권자의 어떠한 선호나 권장도 의미하지 않습니다.
상표권자 또는 저작권자가 사이트의 일부 내용에 대해 권리 침해가 있다고 판단하시는 경우 [email protected]으로 이메일을 보내 주십시오. 유효한 권리 증명을 받은 후 합리적인 기간 내에 관련 내용을 수정하거나 삭제하겠습니다.
본 사이트는 사이트 정보의 이용으로 인해 발생하는 어떠한 직접적 또는 간접적 손해에 대해서도 법적 책임을 지지 않습니다.
Git 소개
Git은 Linus Torvalds가 2005년 4월 BitKeeper 라이선스 분쟁 이후 Linux 커널 소스 트리를 관리하기 위해 만든 무료 오픈 소스 분산 버전 관리 시스템입니다. 모든 작업 디렉터리가 자체 기록을 가진 완전한 저장소이므로, 커밋·분기·병합은 로컬에서 이루어지고 `git push`를 해야만 서버로 올라갑니다 — 이것이 Git이 빠르고 수천 명의 개발자가 오프라인으로 작업할 수 있는 이유입니다. 현재 안정 버전은 Git 2.40+입니다. Git은 콘텐츠 주소 지정 파일 시스템(SHA-1, 곧 SHA-256으로 전환)으로 데이터를 저장하며, `commit`·`tree`·`blob`·`tag` 네 종류의 객체를 사용합니다. 인덱스를 통한 스테이징, 값싼 분기, 리베이스, bisect, 서브모듈, worktree, GPG/SSH 서명된 커밋 등을 지원합니다. 소스 코드 관리의 사실상 표준으로 오픈 소스 프로젝트와 기업 양쪽에서 사용됩니다. 기록·분기·협업이 필요한 모든 곳에서 사용하고, 리뷰 전에 `git rebase -i`로 커밋을 다듬으며, "사라진" 작업은 `git reflog`로 복구할 수 있습니다. Git은 커밋하지 않은 비공개 정보를 업로드하지는 않지만, 커밋한 것은 모두 기억하므로 공개 호스트로 푸시하기 전에 `git filter-repo`로 민감한 데이터를 정리하세요.
치트시트 버전 1.0.0