내가 더 일찍 알았으면 좋았던 Git 명령어

발행: (2026년 2월 5일 오후 05:16 GMT+9)
8 분 소요
원문: Dev.to

I’m happy to translate the article for you, but I’ll need the full text of the post (excluding the source link you’ve already provided). Could you please paste the content you’d like translated? Once I have it, I’ll keep the source line unchanged and translate the rest into Korean while preserving the original formatting, markdown, and any technical terms.

변경 사항 스태시

기능 작업을 진행 중이고 긴급 리뷰를 위해 작업 디렉터리를 깨끗하게 비워야 할 때:

# Save all your changes to the stash
git stash

# Do your other work...

# Bring your changes back
git stash pop

유용한 스태시 변형

# Stash with a descriptive message
git stash save "halfway through login refactor"

# View all stashes
git stash list

# Apply a specific stash without removing it from the list
git stash apply stash@{2}

# Stash only specific files
git stash push -m "navbar changes" src/components/Navbar.jsx

# Stash including untracked files
git stash -u

버그를 찾기 위한 이분 탐색

몇 주 전까지는 통과하던 테스트가 갑자기 실패한다면, 이진 탐색을 이용해 문제를 일으킨 커밋을 정확히 찾아낼 수 있습니다:

# 이분 탐색 세션 시작
git bisect start

# 현재(문제가 있는) 커밋을 나쁨(bad)으로 표시
git bisect bad

# 지난주 등으로 확인된 정상(good) 커밋 지정
git bisect good a1b2c3d

# Git이 중간 커밋을 체크아웃합니다; 테스트 후 Git에 알려 주세요:
git bisect good   # 이 커밋이 정상이라면
git bisect bad    # 이 커밋이 문제라면

# 정확한 나쁜 커밋이 나올 때까지 반복
git bisect reset

자동화된 테스트 스크립트가 있다면:

git bisect start HEAD a1b2c3d
git bisect run npm test

Git이 자동으로 문제 커밋을 찾아줍니다.

Interactive Rebase

브랜치에 작은 커밋이나 오타 수정 커밋이 여러 개 있어 병합하기 전에 정리하고 싶을 때:

# 마지막 5개의 커밋을 인터랙티브하게 리베이스
git rebase -i HEAD~5

편집기가 다음과 같은 목록을 열어줍니다:

pick a1b2c3d Add user authentication
pick b2c3d4e Fix typo in auth
pick c3d4e5f Fix typo again
pick d4e5f6g Add logout feature
pick e5f6g7h Forgot semicolon

명령어를 바꿀 수 있습니다:

pick a1b2c3d Add user authentication
squash b2c3d4e Fix typo in auth
squash c3d4e5f Fix typo again
pick d4e5f6g Add logout feature
fixup e5f6g7h Forgot semicolon

명령어 의미

  • squash (s): 이전 커밋과 합쳐서 하나로 만들고, 메시지를 결합합니다.
  • fixup (f): 이전 커밋과 합쳐서 하나로 만들고, 이 커밋의 메시지는 버립니다.
  • reword (r): 커밋은 유지하되, 메시지를 편집합니다.
  • drop (d): 커밋을 완전히 삭제합니다.
  • edit (e): 멈춰서 커밋을 수정합니다.

⚠️ Warning: 이미 공유 브랜치에 푸시된 커밋은 절대 리베이스하지 마세요.

편리한 Git 별칭

일상 작업을 빠르게 할 수 있도록 ~/.gitconfig에 다음을 추가하세요:

[alias]
    # 더 짧은 상태 표시
    s = status -sb

    # 보기 좋은 로그 그래프
    lg = log --oneline --graph --decorate --all

    # 마지막 커밋을 되돌리되 변경 사항은 유지
    undo = reset --soft HEAD~1

    # 메시지를 수정하지 않고 커밋 수정
    oops = commit --amend --no-edit

    # 오늘 한 작업 보기
    today = log --since='midnight' --author='Your Name' --oneline

    # 병합된 모든 브랜치 삭제 (main/master 제외)
    cleanup = "!git branch --merged | grep -v '\\*\\|main\\|master' | xargs -n 1 git branch -d"

    # 메시지를 지정한 빠른 커밋
    cm = commit -m

    # 새 브랜치를 만들고 전환
    cob = checkout -b

이제 git sgit status --short --branch를 대신합니다.

커밋 수정

파일을 추가하는 것을 잊었거나 커밋 메시지를 수정해야 하나요?

# 마지막 커밋에 잊어버린 파일 추가
git add forgotten-file.js
git commit --amend --no-edit

# 혹은 메시지만 수정
git commit --amend -m "Better commit message"

손실된 작업 복구

만약 실수로 브랜치를 삭제하거나 너무 강하게 리셋하면, reflog가 모든 것을 기억합니다:

git reflog

일반적인 출력:

a1b2c3d HEAD@{0}: reset: moving to HEAD~3
b2c3d4e HEAD@{1}: commit: Add feature
...

이전 상태 복구:

git checkout b2c3d4e
# or
git reset --hard b2c3d4e

특정 커밋 체리픽하기

git cherry-pick a1b2c3d

커밋 찾기

# 커밋 메시지 검색
git log --grep="bug fix"

# 특정 문자열에 대한 코드 변경 검색
git log -S "functionName"

# 특정 파일을 건드린 커밋 표시 (이름 변경 포함)
git log --follow -p -- path/to/file.js

추적되지 않은 파일 정리

먼저 건조 실행:

git clean -n

추적되지 않은 파일 삭제:

git clean -f

추적되지 않은 파일 및 디렉터리 삭제:

git clean -fd

빠른 참고표

CommandWhat It Does
git stash변경 사항을 일시적으로 저장합니다
git stash pop저장된 변경 사항을 복원합니다
git bisect버그를 찾기 위한 이진 검색
git rebase -i HEAD~n마지막 n 커밋을 인터랙티브하게 리베이스합니다
git commit --amend마지막 커밋을 수정합니다
git reflog모든 HEAD 변경 내역을 봅니다
git cherry-pick특정 커밋을 복사합니다
git log -S "text"특정 텍스트가 변경된 커밋을 찾습니다
git clean -fd추적되지 않은 파일 및 디렉터리를 제거합니다

Git은 학습 곡선이 가파르지만, 이 명령들을 마스터하면 워크플로가 크게 바뀝니다. 저는 Git을 두려워하다가 이제는 버전 관리 자체를 즐기게 되었습니다(대부분의 경우). 이 목록에서 하나의 명령을 골라 이번 주에 사용해 보세요; 근육 기억이 될 때까지 연습한 뒤 다른 명령을 추가하면 됩니다. 즐거운 코딩 되세요! 🚀

Back to Blog

관련 글

더 보기 »

Claude Code에서 빠른 쉘 접근

단일 명령 실행 빠른 명령을 실행해야 할 때—예를 들어 git status 확인, 브랜치 전환, 테스트 실행 등—! 접두사를 사용할 수 있습니다.