Git 명령어 치트시트

다음

Git에는 약 150개의 하위 명령어가 있고, 그중 몇몇은 위험할 만큼 서로 비슷합니다, resetrestore, checkoutswitch, rmrestore --staged. 이 치트시트는 실제로 자주 입력하는 명령어를 상황별로 묶었습니다: 일상 워크플로, 브랜치, 실수 되돌리기, 스태시. 원하는 그룹을 골라 블록을 복사하세요.

치트시트 사용 방법

  1. 1

    주제를 고르세요

    일상, 브랜치, 되돌리기, 스태시, 각각이 서로 다른 사고 모드에 대응합니다.

  2. 2

    블록을 훑어보세요

    모든 줄은 그대로 동작하는 완전한 명령어입니다. 명시적으로 표시된 경우가 아니면 꺾쇠괄호 자리표시자는 없습니다.

  3. 3

    필요한 것을 복사하세요

    터미널에 붙여넣고 브랜치 이름이나 커밋 SHA만 바꿔서 실행하세요.

왜 숙련된 사용자조차 명령어에 혼란스러워할까

Git의 포슬린(porcelain) 명령은 하나씩 덧붙여지며 자라났습니다. checkout은 ‘브랜치 전환’과 ‘파일 복원’ 두 가지에 겹쳐 쓰였고, reset은 ‘작업 폐기’와 ‘브랜치 포인터 이동’ 사이에 걸쳐 있습니다. Git 2.23부터는 더 명확한 동사가 생겼습니다.

이전 새 명령(더 명확함)
git checkout branch git switch branch
git checkout -b new git switch -c new
git checkout -- file git restore file
git checkout --staged file git restore --staged file

안전한 되돌리기 단계

  1. 파일 하나 복원: git restore path/to/file(스테이징 안 됨) 또는 git restore --staged path/to/file(스테이징됐지만 커밋 안 됨).
  2. 마지막 커밋을 취소하되 변경 사항은 유지: git reset --soft HEAD~1.
  3. 마지막 커밋을 취소하고 변경 사항도 폐기: git reset --hard HEAD~1(되돌릴 수 없으니 커밋하지 않은 작업이 없는지 먼저 확인하세요).
  4. 공유된 커밋 되돌리기: git revert <sha>, 기존 커밋을 무효화하는 새 커밋을 만들며, 이미 푸시된 히스토리에서도 안전합니다.

스태시(stash) 사용 예절

  • 항상 메시지를 붙여 스태시하세요: git stash push -m "wip: API 연결 중".
  • 팝 하기 전에 git stash list로 스태시 목록을 확인하세요, 이름 없는 스태시는 금세 쌓입니다.
  • git stash pop은 적용 후 삭제하고, git stash apply는 적용 후 그대로 남겨 둡니다.

복구

하드 리셋 후 커밋을 잃어버렸나요? 대부분 아직 reflog에 남아 있습니다. git reflog를 실행해 지난 90일간의 모든 HEAD 이동 내역을 확인하고, git reset --hard <sha>로 정상 상태로 되돌리세요.

자주 묻는 질문

Git 2.23(2019년 8월)부터 프로젝트는 여러 역할이 겹쳐 있던 checkout을 둘로 나눴습니다. switch는 브랜치를 바꾸고, restore는 파일을 되돌립니다. 두 명령어 모두 하위 호환을 위해 남아 있지만, 나중에 셸 히스토리를 다시 볼 때 훨씬 읽기 쉽습니다.

reset은 브랜치 포인터를 옮깁니다(경우에 따라 작업 트리까지 함께). revert은 이전 커밋을 취소하는 새 커밋을 만들며 공유 브랜치에서도 안전합니다. checkout / restore는 히스토리를 다시 쓰지 않고 작업 트리의 파일만 바꿉니다.

git revert <sha>로 이를 상쇄하는 커밋을 추가한 뒤 그 커밋을 푸시하세요. 팀이 명시적으로 합의하지 않았다면 공유 브랜치에서 git reset --hard + git push --force는 피하세요.

명령어는 페이지에서 렌더링되는 정적 텍스트입니다. 선택한 주제는 해당 명령어를 표시하기 위해서만 서버로 전송되며, 두 단계 사이를 이동할 때는 페이지 링크에도 실립니다. 저장되거나 기록되지 않습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다