push를 취소하고 싶을 때
이럴 때 참고하세요
“실수로 push 해버렸어요” / “push한 커밋을 없애고 싶어요”
상황별 빠른 해결
개인 브랜치
git reset --hard HEAD~1
git push -f origin 브랜치명협업 브랜치 (안전)
git revert HEAD
git push origin 브랜치명방법 비교
| 방법 | 히스토리 | 협업 안전성 | 용도 |
|---|---|---|---|
| force push | 변경 | 위험 | 개인 브랜치 |
| revert | 유지 | 안전 | 협업 브랜치 |
방법 1: Force Push (개인 브랜치)
주의
다른 사람이 해당 브랜치를 사용 중이면 문제가 발생합니다. 개인 feature 브랜치에서만 사용하세요!
# 1. 로컬에서 커밋 취소
git reset --hard HEAD~1
# 2. 강제 push
git push -f origin feature/my-branch여러 커밋 취소
# 최근 3개 커밋 취소
git reset --hard HEAD~3
git push -f origin 브랜치명특정 커밋으로 되돌리기
# 해당 커밋으로 reset
git reset --hard a1b2c3d
git push -f origin 브랜치명방법 2: Revert (협업 브랜치)
새 커밋으로 변경사항을 되돌립니다. 히스토리가 유지되어 안전합니다.
# 직전 커밋 되돌리기
git revert HEAD
git push origin main결과
Before:
[c1]──▶[c2]──▶[c3]
After:
[c1]──▶[c2]──▶[c3]──▶[Revert c3]
여러 커밋 되돌리기
# 하나씩 되돌리기 (최신 것부터)
git revert HEAD
git revert HEAD~1
git push
# 또는 범위로
git revert HEAD~2..HEAD
git push상황별 상세 가이드
상황 1: 비밀 정보를 push 했을 때
긴급!
API 키, 비밀번호 등이 유출되면 즉시 해당 키를 무효화하세요. Git 히스토리에서 완전히 제거하려면 추가 작업이 필요합니다.
# 1. 로컬에서 제거
git reset --hard HEAD~1
# 또는 파일만 제거
git rm --cached secret.env
git commit -m "chore: 비밀 파일 제거"
# 2. .gitignore에 추가
echo "secret.env" >> .gitignore
git add .gitignore
git commit -m "chore: gitignore 업데이트"
# 3. force push (개인 브랜치) 또는 협업 시 새 커밋
git push -f origin 브랜치명
# 4. ⚠️ 중요: 유출된 키는 반드시 무효화/재발급!상황 2: 잘못된 브랜치에 push
# 1. 잘못된 브랜치에서 제거
git push origin --delete 잘못된브랜치
# 또는 reset + force push
git reset --hard HEAD~1
git push -f origin 잘못된브랜치
# 2. 올바른 브랜치에 push
git switch 올바른브랜치
git push origin 올바른브랜치상황 3: main에 직접 push 해버렸을 때
# 안전하게 revert
git revert HEAD
git push origin main
# 올바른 브랜치에서 다시 작업
git switch -c feature/correct-branch
git cherry-pick 원래커밋ID
git push origin feature/correct-branch안전한 Force Push
--force-with-lease를 사용하면 더 안전합니다:
git push --force-with-lease origin 브랜치명특징:
- 내가 마지막으로 본 상태에서만 강제 push
- 다른 사람이 push한 커밋이 있으면 실패
- 실수로 다른 사람 작업을 덮어쓰는 것 방지
자주 하는 실수
force push 후 팀원 코드 유실
예방:
- 협업 브랜치에서는 force push 금지
--force-with-lease사용- 팀원과 미리 소통
revert 후 다시 해당 기능 추가
revert를 또 revert하면 원래 코드가 복원됩니다:
git revert 리버트커밋ID관련 문서
- git push - push 명령어
- git revert - 안전한 되돌리기
- git reset - 커밋 취소
- Remote란 - 원격 저장소
더 알아보기
- 실수 복구 시나리오 - 다양한 복구 방법
- 이전 버전으로 돌아가기 - 되돌리기 전체 가이드