Project
[GitHub] 가장 최근 커밋 삭제
싱숭셩숭
2024. 9. 12. 16:50
Git reset 명령어: 최근 커밋을 히스토리에서 깔끔하게 삭제
0. 예시 시나리오
최근 커밋에서 실수한 내용을 되돌리고, 작업 파일을 수정한 뒤 다시 커밋하고 싶다면
git reset --soft HEAD~1 # 최근 커밋 삭제 (스테이징 상태 유지)
# 수정 작업 후
git add .
git commit -m "Fix recent commit"
git push origin main --force # 원격 푸시(강제)
1. git reset으로 최근 커밋 삭제
-hard 옵션
git reset --hard HEAD~1
- 커밋과 작업 파일 내용 모두 삭제
- 실행하면 최근 커밋과 함께 커밋된 파일의 변경 내용도 완전히 복구된다
- 삭제된 파일을 되돌릴 수 없으므로 신중히 사용해야 함
-soft 옵션
git reset --soft HEAD~1
- 커밋만 삭제, 작업 파일은 스테이징 상태로 유지
- 실행 결과 :
- 최근 커밋 삭제
- 파일은 여전히 git add된 상태로 남아 있음.
- 바로 새로운 커밋을 만들거나 수정한 뒤 다시 커밋할 수 있음.
- 사용 시점 :
- 커밋 메시지를 수정하거나, 작업 내용을 추가한 뒤 새롭게 커밋하고 싶을 때
-mixed 옵션
git reset --mixed HEAD~1
- 커밋 삭제, 스테이징 상태 초기화
- 실행 결과 :
- 최근 커밋 삭제
- 파일 변경 내용은 작업 디렉터리에 남아 있지만, 스테이징 상태에서 해제됨
- 사용 시점 :
- 어떤 파일을 다시 git add할지 선택적으로 조정하고 싶을 때
옵션별 요약
| 옵션 | 커밋 삭제 | git add 상태 | 파일 변경 내용 |
| --soft | 삭제 | 유지 | 유지 |
| --mixed | 삭제 | 초기화 | 유지 |
| --hard | 삭제 | 초기화 | 삭제 |
2. 주의사항 : 원격 저장소에 이미 푸시한 커밋을 수정할 경우
git push origin main --force
- 먼저 로컬에서 git reset 으로 커밋을 수정하거나 삭제한 뒤, 강제 푸시를 해야 한다
- 하지만 이 방법은 다른 팀원이 공유 중인 작업을 망칠 위험이 있으므로, 협업 중이라면 팀원과 상위 후 사용해야 함
추가 팁
- 안전한 작업을 위해 git status와 git log를 자주 확인
git log --oneline
git status