Skip to content
Tools/Git 명령어 찾기

Git 명령어 찾기

Git Command Finder

"이렇게 하고 싶은데…"로 검색하면 딱 맞는 Git 명령어를 찾아주는 상황 기반 치트시트. 위험도 표시와 원클릭 복사를 제공합니다.

명령어 속 <branch> 처럼 < > 로 감싼 부분은 실제 값으로 바꿔 쓰세요.

전체 78개 중 78개 표시 중

마지막 커밋 메시지를 고치고 싶어요

주의
git commit --amend -m "<message>"

마지막 커밋의 메시지를 새로 씁니다. 커밋 해시가 바뀌므로 이미 push한 커밋이라면 force push가 필요해져요. 공유 브랜치라면 팀원과 먼저 상의하세요.

커밋

깜빡한 파일을 마지막 커밋에 추가하고 싶어요 (메시지는 그대로)

주의
git add <file>
git commit --amend --no-edit

빠뜨린 파일을 스테이징한 뒤 마지막 커밋에 합칩니다. --no-edit 덕분에 커밋 메시지는 그대로 유지돼요. 역시 커밋 해시가 바뀌니 push 전에 하는 것이 좋아요.

커밋

한 파일에서 일부 변경만 골라서 커밋하고 싶어요

안전
git add -p <file>
git commit -m "<message>"

변경 덩어리(hunk)마다 y/n을 눌러 스테이징할 부분을 고릅니다. 한 파일에 섞여 버린 여러 작업을 의미 단위로 쪼개 커밋할 때 최고예요.

커밋

수정한 파일을 add 없이 한 번에 커밋하고 싶어요

안전
git commit -am "<message>"

이미 추적 중인(tracked) 파일의 변경을 스테이징과 동시에 커밋합니다. 새로 만든 파일(untracked)은 포함되지 않으니 주의하세요.

커밋

CI를 다시 돌리려고 빈 커밋을 만들고 싶어요

안전
git commit --allow-empty -m "chore: trigger CI"

파일 변경 없이 커밋만 하나 만듭니다. CI 재실행이나 배포 트리거, 브랜치 시작점 표시용으로 자주 쓰여요.

커밋

예전 커밋을 고치는 커밋을 만들고 나중에 깔끔히 합치고 싶어요

주의
git commit --fixup <commit>
git rebase -i --autosquash <commit>~1

fixup 커밋을 만들어 두면 autosquash rebase가 대상 커밋 바로 뒤에 자동 배치해 합쳐 줍니다. 코드리뷰 피드백을 반영할 때 특히 유용해요.

커밋

마지막 커밋의 작성자(author)를 바꾸고 싶어요

주의
git commit --amend --author="<name> <email>"

회사/개인 계정을 착각하고 커밋했을 때 사용합니다. 형식은 --author="이름 <이메일>" 이고, 이메일을 감싸는 꺾쇠는 실제로 입력해야 하는 문법이에요.

커밋

커밋에 서명(GPG/SSH)해서 Verified 배지를 받고 싶어요

안전
git commit -S -m "<message>"
git config --global commit.gpgsign true

-S 옵션으로 커밋에 서명합니다. 두 번째 명령으로 항상 서명하도록 기본값을 켤 수 있어요. GPG 또는 SSH 키를 GitHub에 등록하면 Verified 배지가 붙습니다.

커밋

변경된 파일을 전부 한 번에 스테이징하고 싶어요

안전
git add -A

수정·삭제·새 파일까지 저장소 전체의 모든 변경을 스테이징합니다. 현재 폴더 이하만 담으려면 git add . 을 사용하세요.

커밋

브랜치 이름을 바꾸고 싶어요

안전
git branch -m <new-name>

현재 브랜치의 이름을 바꿉니다. 다른 브랜치는 git branch -m 옛이름 새이름. 이미 push한 브랜치라면 새 이름으로 push -u 하고 옛 리모트 브랜치를 지워야 해요.

브랜치

새 브랜치를 만들면서 바로 이동하고 싶어요

안전
git switch -c <branch>

브랜치 생성과 체크아웃을 한 번에 합니다. 예전 방식은 git checkout -b 브랜치명. 특정 커밋에서 시작하려면 뒤에 커밋 해시를 붙이세요.

브랜치

실수로 삭제한 브랜치를 복구하고 싶어요

안전
git reflog
git branch <branch> <commit>

reflog에서 삭제된 브랜치가 가리키던 마지막 커밋 해시를 찾은 뒤, 그 커밋을 가리키는 브랜치를 다시 만듭니다. 커밋은 한동안 사라지지 않으니 침착하게!

브랜치

다 쓴 로컬 브랜치를 삭제하고 싶어요

주의
git branch -d <branch>

병합이 끝난 브랜치를 삭제합니다. 병합 안 된 브랜치를 강제로 지우려면 -D(대문자)를 쓰는데, 그 안의 커밋을 잃을 수 있으니 신중하게요.

브랜치

리모트(원격) 브랜치를 삭제하고 싶어요

주의
git push origin --delete <branch>

원격 저장소의 브랜치를 삭제합니다. 다른 팀원이 사용 중인 브랜치가 아닌지 반드시 확인한 뒤 실행하세요.

브랜치

리모트에 있는 브랜치를 받아와서 작업하고 싶어요

안전
git switch <branch>

origin에 같은 이름의 브랜치가 있으면 자동으로 추적(tracking) 브랜치를 만들어 체크아웃합니다. 명시적으로 하려면 git checkout -t origin/브랜치명.

브랜치

실수로 main에 커밋했어요. 새 브랜치로 옮기고 싶어요

주의
git branch <new-branch>
git reset --hard HEAD~1
git switch <new-branch>

커밋을 담은 새 브랜치를 만들고, main은 한 커밋 전으로 되돌린 뒤 새 브랜치로 이동합니다. 커밋이 여러 개면 HEAD~1 대신 origin/main을 쓰세요. 커밋하지 않은 변경이 있다면 먼저 stash 해두세요.

브랜치

병합 완료된 브랜치들을 한꺼번에 정리하고 싶어요

주의
git branch --merged | grep -vE "main|master|\*" | xargs git branch -d

이미 병합된 브랜치 목록에서 main/master와 현재 브랜치(*)를 제외하고 모두 삭제합니다. 실행 전에 git branch --merged 로 목록을 먼저 확인하세요.

브랜치

다른 브랜치의 특정 파일만 가져오고 싶어요

주의
git restore --source <branch> <file>

브랜치를 전환하지 않고 다른 브랜치의 파일 내용을 현재 작업 트리로 가져옵니다. 예전 방식은 git checkout 브랜치명 -- 파일명. 현재 파일 내용을 덮어쓰니 주의하세요.

브랜치

마지막 커밋을 취소하되 변경 내용은 남기고 싶어요

안전
git reset --soft HEAD~1

커밋만 취소하고 변경 내용은 스테이징된 상태로 남습니다. 커밋을 쪼개거나 다시 정리해서 만들 때 가장 많이 쓰는 방법이에요.

되돌리기

마지막 커밋을 취소하고 스테이징도 풀고 싶어요

안전
git reset HEAD~1

기본값인 --mixed 모드로 동작해 커밋과 스테이징을 모두 취소하고, 변경 내용은 작업 트리에 그대로 남깁니다.

되돌리기

마지막 커밋을 변경 내용까지 완전히 버리고 싶어요

위험
git reset --hard HEAD~1

커밋과 변경 내용을 모두 삭제합니다. 되돌린 내용은 reflog로만 구조할 수 있어요. 이미 push한 커밋이라면 이 방법 대신 revert를 쓰세요.

⚠️ 되돌리기 어려운 명령어예요. 잃어버려도 되는 변경인지 실행 전에 꼭 확인하세요.

되돌리기

특정 파일만 스테이징에서 내리고(unstage) 싶어요

안전
git restore --staged <file>

add를 취소해서 스테이징에서만 내립니다. 파일의 변경 내용은 그대로 남아요. 예전 방식은 git reset HEAD 파일명.

되돌리기

로컬 변경사항을 전부 버리고 깨끗한 상태로 돌아가고 싶어요

위험
git restore .

추적 중인 모든 파일을 마지막 커밋 상태로 되돌립니다. 예전 방식은 git checkout -- . 이며, 이렇게 버린 변경은 복구할 수 없습니다!

⚠️ 되돌리기 어려운 명령어예요. 잃어버려도 되는 변경인지 실행 전에 꼭 확인하세요.

되돌리기

특정 파일의 변경만 버리고 싶어요

위험
git restore <file>

해당 파일을 마지막 커밋 상태로 되돌립니다. 커밋하지 않은 변경은 복구할 수 없으니 실행 전에 git diff로 내용을 확인하세요.

⚠️ 되돌리기 어려운 명령어예요. 잃어버려도 되는 변경인지 실행 전에 꼭 확인하세요.

되돌리기

이미 push한 커밋을 안전하게 되돌리고 싶어요

안전
git revert <commit>

해당 커밋의 변경을 반대로 뒤집는 새 커밋을 만듭니다. 히스토리를 다시 쓰지 않기 때문에 공유 브랜치에서도 안전한 정석 방법이에요.

되돌리기

push된 머지 커밋을 되돌리고 싶어요

주의
git revert -m 1 <merge-commit>

-m 1은 첫 번째 부모(머지를 받은 쪽 브랜치)를 기준으로 되돌린다는 뜻입니다. 같은 브랜치를 나중에 다시 머지하려면 revert 커밋을 다시 revert해야 할 수 있어요.

되돌리기

추적되지 않는 파일(untracked)을 싹 지우고 싶어요

위험
git clean -nd
git clean -fd

먼저 -n(dry-run)으로 삭제될 파일을 확인한 뒤 -f로 실제 삭제하세요. -d는 디렉터리 포함입니다. 지워진 파일은 Git으로 복구할 수 없어요!

⚠️ 되돌리기 어려운 명령어예요. 잃어버려도 되는 변경인지 실행 전에 꼭 확인하세요.

되돌리기

잘못된 reset/rebase 이전 상태로 돌아가고 싶어요

주의
git reflog
git reset --hard <commit>

reflog는 HEAD가 지나온 모든 지점의 기록입니다. 사고 직전의 해시를 찾아 그 시점으로 복귀하세요. Git의 타임머신 같은 존재예요.

되돌리기

특정 커밋 시점의 파일로 복원하고 싶어요

주의
git restore --source <commit> <file>

해당 커밋 시점의 내용으로 파일을 되돌립니다. 커밋은 만들지 않으니 내용 확인 후 직접 커밋하세요. 파일의 현재 변경 내용은 덮어써집니다.

되돌리기

이미 커밋된 파일을 .gitignore로 뒤늦게 제외하고 싶어요

주의
git rm -r --cached <file>
git commit -m "chore: stop tracking <file>"

--cached는 실제 파일은 남겨두고 Git 추적만 중단합니다. 이후 .gitignore에 해당 경로를 추가하면 더 이상 변경이 잡히지 않아요.

되돌리기

작업 중인 변경을 잠깐 치워두고 싶어요

안전
git stash push -m "<message>"

변경사항을 스택에 보관하고 작업 트리를 깨끗하게 만듭니다. 급하게 브랜치를 옮겨야 할 때 유용하고, 메시지를 붙여두면 나중에 찾기 훨씬 쉬워요.

스태시

치워둔 변경을 다시 가져오고 싶어요

안전
git stash pop

가장 최근 스태시를 적용하고 목록에서 제거합니다. 적용만 하고 보관은 유지하려면 git stash apply. 충돌이 나면 스태시가 자동 삭제되지 않으니 해결 후 drop 하세요.

스태시

스태시 목록을 확인하고 싶어요

안전
git stash list

보관 중인 스태시를 최신순으로 보여줍니다. stash@{0}이 가장 최근이에요. 내용을 미리 보려면 git stash show -p stash@{0}.

스태시

여러 스태시 중 특정 것만 골라 적용하고 싶어요

안전
git stash apply stash@{2}

stash list에서 확인한 번호로 원하는 스태시를 골라 적용합니다. apply는 스태시를 목록에 남겨두므로 다 썼다면 git stash drop으로 정리하세요.

스태시

새로 만든 파일(untracked)까지 함께 스태시하고 싶어요

안전
git stash -u

기본 stash는 추적 중인 파일만 보관합니다. -u(--include-untracked)를 붙이면 새로 만든 파일도 함께 치워둘 수 있어요.

스태시

필요 없는 스태시를 삭제하고 싶어요

주의
git stash drop stash@{0}
git stash clear

drop은 특정 스태시 하나를, clear는 전부를 삭제합니다. clear로 지운 스태시는 복구가 매우 어려우니 git stash list로 목록을 먼저 확인하세요.

스태시

force push를 최대한 안전하게 하고 싶어요

주의
git push --force-with-lease

내가 마지막으로 fetch한 이후 리모트에 다른 사람의 push가 있으면 거부됩니다. 무조건 덮어쓰는 --force보다 훨씬 안전하지만, 여전히 히스토리를 덮어쓰므로 공유 브랜치에서는 신중하게!

리모트

리모트 저장소 주소(URL)를 바꾸고 싶어요

안전
git remote set-url origin <url>

저장소 이전, HTTPS에서 SSH로 전환할 때 사용합니다. git remote -v로 바뀐 결과를 확인하세요.

리모트

리모트에서 지워진 브랜치를 내 목록에서도 정리하고 싶어요

안전
git fetch --prune

리모트에서 삭제된 브랜치의 원격 추적 참조(origin/…)를 로컬에서도 지웁니다. 항상 자동으로 하려면 git config --global fetch.prune true.

리모트

새 브랜치를 처음 push하면서 추적 설정까지 하고 싶어요

안전
git push -u origin <branch>

-u(--set-upstream)로 로컬 브랜치와 리모트 브랜치를 연결합니다. 이후부터는 git push, git pull만 입력해도 돼요.

리모트

동료가 force push한 브랜치에 내 로컬을 맞추고 싶어요

위험
git fetch origin
git reset --hard origin/<branch>

로컬 브랜치를 리모트 상태와 강제로 일치시킵니다. 로컬에만 있는 커밋과 변경사항은 사라지니, 남겨야 할 작업이 있다면 먼저 백업 브랜치를 따두세요.

⚠️ 되돌리기 어려운 명령어예요. 잃어버려도 되는 변경인지 실행 전에 꼭 확인하세요.

리모트

연결된 리모트 저장소 목록을 확인하고 싶어요

안전
git remote -v

fetch/push에 사용되는 리모트 이름과 URL을 보여줍니다. 보통 origin 하나지만, fork 기반 작업에서는 upstream을 추가해서 씁니다.

리모트

pull 받을 때 머지 커밋 없이 깔끔하게 당기고 싶어요

안전
git pull --rebase

내 로컬 커밋을 리모트 커밋 위로 재배치해서 불필요한 머지 커밋을 만들지 않습니다. 기본값으로 만들려면 git config --global pull.rebase true.

리모트

큰 저장소를 최신 커밋만 얕게(shallow) 받고 싶어요

안전
git clone --depth 1 <url>

전체 히스토리 없이 최신 스냅샷만 받아 클론이 훨씬 빠릅니다. 나중에 전체 히스토리가 필요해지면 git fetch --unshallow로 채울 수 있어요.

리모트

특정 파일의 변경 이력을 diff와 함께 보고 싶어요

안전
git log -p -- <file>

해당 파일을 건드린 커밋과 실제 변경 내용(diff)을 함께 보여줍니다. -- 뒤에 파일 경로를 쓰는 것이 포인트예요. 커밋 목록만 보려면 -p를 빼세요.

로그/조회

이 코드 줄을 누가 언제 작성했는지 알고 싶어요

안전
git blame -L 10,20 <file>

10~20번째 줄의 마지막 수정자와 커밋을 보여줍니다. 공백 변경을 무시하려면 -w, 코드 이동/복사까지 추적하려면 -C를 추가하세요.

로그/조회

커밋 히스토리를 그래프로 한눈에 보고 싶어요

안전
git log --oneline --graph --all

브랜치의 분기와 머지를 텍스트 그래프로 보여줍니다. 자주 쓴다면 alias로 등록해 두는 것을 추천해요.

로그/조회

특정 코드(문자열)가 언제 추가되고 삭제됐는지 찾고 싶어요

안전
git log -S "<query>" --oneline

해당 문자열의 등장 횟수가 변한 커밋(추가되거나 삭제된 지점)을 찾아줍니다. 정규식으로 찾으려면 -G를 쓰세요. 일명 pickaxe 검색이에요.

로그/조회

특정 사람이 작성한 커밋만 모아 보고 싶어요

안전
git log --author="<name>" --oneline

작성자 이름이나 이메일의 일부로 커밋을 필터링합니다. 기간을 좁히려면 --since="2 weeks ago" 같은 옵션을 함께 쓰세요.

로그/조회

두 브랜치 사이에 어떤 차이가 있는지 보고 싶어요

안전
git log main..<branch> --oneline
git diff main...<branch>

log의 점 두 개(..)는 브랜치에만 있는 커밋 목록을, diff의 점 세 개(...)는 공통 조상 기준의 코드 차이를 보여줍니다. PR에 나올 내용을 미리 확인할 때 좋아요.

로그/조회

스테이징한 변경만 따로 확인하고 싶어요

안전
git diff --staged

add된 변경만 보여줍니다(--cached와 동일). 그냥 git diff는 아직 add하지 않은 변경만 보여준다는 것도 함께 기억하세요.

로그/조회

이름이 바뀐 파일의 이력까지 이어서 추적하고 싶어요

안전
git log --follow -- <file>

파일명 변경(rename) 이전의 히스토리까지 이어서 보여줍니다. 리팩터링으로 파일을 옮긴 뒤 이력이 끊겨 보일 때 쓰세요.

로그/조회

커밋 하나의 변경 내용을 자세히 보고 싶어요

안전
git show <commit>

커밋 메시지, 작성자, diff를 한 번에 보여줍니다. 그 커밋 시점의 특정 파일만 보려면 git show 커밋:파일경로 형태도 가능해요.

로그/조회

Git 사용자 이름과 이메일을 설정하고 싶어요

안전
git config --global user.name "<name>"
git config --global user.email "<email>"

커밋에 기록될 이름과 이메일을 전역으로 설정합니다. GitHub에 등록된 이메일과 일치해야 잔디(contribution)가 정상적으로 채워져요.

설정

이 저장소에서만 다른 이메일(회사/개인)을 쓰고 싶어요

안전
git config user.email "<email>"

--global 없이 실행하면 현재 저장소에만 적용됩니다. 회사 프로젝트와 개인 프로젝트의 커밋 계정을 분리할 때 필수예요.

설정

자주 쓰는 긴 명령을 짧게 줄이고(alias) 싶어요

안전
git config --global alias.lg "log --oneline --graph --all"

이제 git lg만 입력하면 됩니다. alias.st "status -s", alias.co "switch" 처럼 자기 스타일대로 자유롭게 등록하세요.

설정

새 저장소의 기본 브랜치 이름을 main으로 하고 싶어요

안전
git config --global init.defaultBranch main

git init 할 때 만들어지는 첫 브랜치의 이름을 정합니다. 이미 만들어진 저장소에는 영향을 주지 않아요.

설정

Windows/Mac 협업에서 줄바꿈(CRLF) 경고를 해결하고 싶어요

안전
git config --global core.autocrlf input

Mac/Linux에서는 input, Windows에서는 true를 권장합니다. 저장소에는 항상 LF로 저장되어 OS가 섞인 팀에서도 diff가 지저분해지지 않아요.

설정

지금 적용된 Git 설정을 전부 확인하고 싶어요

안전
git config --list --show-origin

어떤 설정이 어느 파일(system/global/local)에서 왔는지까지 보여줍니다. 설정이 꼬였을 때 원인을 추적하기에 최고예요.

설정

머지하다 충돌났어요. 일단 머지 전으로 돌아가고 싶어요

안전
git merge --abort

진행 중인 머지를 취소하고 머지 시작 전 상태로 되돌립니다. 충돌이 감당되지 않을 때 일단 후퇴하고 다시 전략을 짜세요.

충돌해결

rebase 도중에 그만두고 원래대로 돌아가고 싶어요

안전
git rebase --abort

진행 중인 rebase를 취소하고 시작 전 상태로 완전히 되돌립니다. rebase가 꼬였다 싶으면 언제든 안전하게 탈출할 수 있어요.

충돌해결

충돌난 파일 목록만 빠르게 보고 싶어요

안전
git diff --name-only --diff-filter=U

충돌(Unmerged) 상태인 파일 경로만 출력합니다. 충돌 파일이 많을 때 처리 현황 체크리스트로 쓰기 좋아요.

충돌해결

충돌난 파일을 통째로 내 것/상대 것으로 선택하고 싶어요

주의
git checkout --ours <file>
git checkout --theirs <file>

--ours는 현재 브랜치, --theirs는 머지해 오는 브랜치의 버전을 선택합니다. 단, rebase 중에는 ours/theirs의 의미가 반대가 되니 꼭 주의하세요!

충돌해결

충돌을 해결했어요. 머지/리베이스를 계속 진행하고 싶어요

안전
git add <file>
git merge --continue

충돌을 해결한 파일을 add로 표시한 뒤 계속 진행합니다. rebase 중이라면 git rebase --continue, cherry-pick 중이라면 git cherry-pick --continue를 쓰세요.

충돌해결

cherry-pick 하다가 충돌났어요. 중단하고 싶어요

안전
git cherry-pick --abort

진행 중인 cherry-pick을 취소하고 시작 전 상태로 되돌립니다. 충돌을 해결하고 계속하려면 git cherry-pick --continue.

충돌해결

릴리즈 버전 태그를 만들고 싶어요

안전
git tag -a v1.2.0 -m "Release v1.2.0"

-a는 작성자·날짜·메시지가 담긴 annotated 태그를 만듭니다. 릴리즈에는 가벼운(lightweight) 태그보다 annotated 태그를 권장해요.

태그/릴리즈

만든 태그를 리모트에 올리고 싶어요

안전
git push origin <tag>
git push origin --tags

태그는 일반 push에 포함되지 않아 따로 올려야 합니다. --tags는 로컬의 모든 태그를 한 번에 push해요. CI 릴리즈가 태그 push로 트리거되는 경우가 많아요.

태그/릴리즈

잘못 만든 태그를 삭제하고 싶어요 (로컬+리모트)

주의
git tag -d <tag>
git push origin --delete <tag>

로컬 태그를 지운 뒤 리모트에서도 삭제합니다. 이미 배포에 사용된 태그라면 삭제 대신 새 버전 태그를 만드는 편이 안전해요.

태그/릴리즈

특정 태그(버전) 시점의 코드를 구경하고 싶어요

안전
git checkout v1.2.0

detached HEAD 상태로 해당 시점의 코드를 볼 수 있습니다. 여기서 수정 작업을 시작하려면 git switch -c 브랜치명으로 브랜치를 만들어 주세요.

태그/릴리즈

가장 최근 태그(버전)가 무엇인지 확인하고 싶어요

안전
git describe --tags --abbrev=0

현재 커밋에서 가장 가까운 태그 이름을 출력합니다. CI에서 버전 넘버를 뽑아낼 때도 자주 쓰여요.

태그/릴리즈

다른 브랜치의 특정 커밋 하나만 가져오고 싶어요

주의
git cherry-pick <commit>

해당 커밋의 변경을 현재 브랜치에 새 커밋으로 복사합니다. 여러 개는 공백으로 나열하거나 A..B 범위로 지정할 수 있어요. 핫픽스를 릴리즈 브랜치에 반영할 때 자주 씁니다.

고급

지저분한 커밋 여러 개를 하나로 합치고 싶어요

주의
git rebase -i HEAD~3

에디터가 열리면 합칠 커밋 앞의 pick을 squash(또는 s)로 바꾸세요. HEAD~3은 최근 3개 커밋이 대상이라는 뜻입니다. 이미 push한 커밋이라면 force push가 필요해져요.

고급

예전 커밋의 메시지 수정·순서 변경·삭제를 하고 싶어요

주의
git rebase -i <commit>~1

대상 커밋부터의 목록이 열립니다. reword(메시지 수정), edit(내용 수정), drop(삭제), 줄 순서 바꾸기로 히스토리를 다듬으세요. 이미 공유된 커밋이라면 신중하게!

고급

내 브랜치를 최신 main 위로 올리고(rebase) 싶어요

주의
git fetch origin
git rebase origin/main

내 커밋들을 최신 main 꼭대기로 재배치해 히스토리를 일자로 만듭니다. 이미 push했던 브랜치라면 git push --force-with-lease로 다시 올려야 해요.

고급

거대한 모노레포에서 필요한 폴더만 받고 싶어요

안전
git clone --filter=blob:none --sparse <url>
git sparse-checkout set <dir>

파일 내용은 필요할 때만 내려받고, 지정한 폴더만 작업 트리에 펼칩니다. 모노레포에서 디스크 용량과 클론 시간을 크게 아껴줘요.

고급

브랜치를 전환하지 않고 여러 브랜치를 동시에 작업하고 싶어요

안전
git worktree add ../<dir> <branch>

같은 저장소를 다른 폴더에 다른 브랜치로 펼칩니다. 급한 핫픽스가 들어왔을 때 stash 없이 새 폴더에서 바로 작업할 수 있어요. 정리는 git worktree remove 폴더명.

고급

어느 커밋에서 버그가 생겼는지 자동으로 찾고 싶어요

안전
git bisect start
git bisect bad
git bisect good <commit>

이진 탐색으로 범인 커밋을 찾아줍니다. 각 단계에서 테스트해 보고 good/bad를 입력하고, 끝나면 git bisect reset으로 복귀하세요. 테스트 스크립트가 있다면 git bisect run으로 자동화도 가능해요.

고급

파일 이름의 대소문자만 바꾸고 싶어요

안전
git mv <File> <file>

macOS/Windows처럼 대소문자를 구분하지 않는 파일시스템에서는 그냥 이름을 바꾸면 Git이 감지하지 못합니다. git mv를 쓰면 한 번에 해결돼요. 안 되면 임시 이름을 거쳐 두 번 mv 하세요.

고급

위험도 안내

🟢 안전: 조회하거나 언제든 쉽게 되돌릴 수 있는 명령어

🟡 주의: 히스토리를 바꾸거나 조건에 따라 부작용이 있는 명령어

🔴 위험: 변경사항이 사라질 수 있고 복구가 어려운 명령어 — 실행 전 꼭 확인!