상세 컨텐츠

본문 제목

[Git] Commit Log 를 삭제하는 방법

DevOps/Git

by code_down 2025. 3. 19. 18:00

본문

깃 로그에 올리지 말아야할 정보(ip, 계정)를 올리게 되어, 커밋 로그를 삭제하는 방법을 정리하게 되었습니다.

 

1. 커밋 로그 해시 키 확인 방법

git log --oneline

 

예제

a1b2c3d Fix: 버그 수정
e4f5g6h Feat: 새로운 기능 추가
i7j8k9l Refactor: 코드 리팩토링

 

 

2. git reset (가장 최근 커밋 취소)

--soft : 커밋만 취소하고 파일은 유지

git reset --soft HEAD~1

커밋은 취소되지만, git add (파일 변경 내용) 그대로 남게 됩니다.
(다시 git commit 하면 변경 내용을 재사용 가능합니다.)

 

-mixed : 커밋과 스테이징 영역도 취소

git reset --mixed HEAD~1

커밋과 git add 한 내용도 취소됨
(변경된 파일 내용은 그대로 유지됨)

 

--hard : 커밋과 파일 변경 사항까지 완전히 삭제

git reset --hard HEAD~1

변경 사항이 모두 삭제되므로 신중하게 사용해야 합니다.
(커밋 내용 + 변경된 파일 내용까지 삭제됩니다.)

 

2. 특정 커밋 해시까지 reset 하기

git reset --hard <커밋 해시>

 

 

예제

a1b2c3d Fix: 버그 수정
e4f5g6h Feat: 새로운 기능 추가
i7j8k9l Refactor: 코드 리팩토링

 

git reset --hard e4f5g6h 를 실행하면, 해당 커밋(e4f5g6h)이 최종 커밋이 되고, 그 이후의 커밋(a1b2c3d)이 리셋됩니다.

 

3. 특정 커밋을 되돌리기 (git revert 사용)

git revert <커밋 해시>

취소된 내용이 새로운 커밋으로 남음 (기록 유지)

(팀 프로젝트에서 공유된 커밋을 취소할 때 가장 안전한 방법)

 

4. 여러 개의 최근 커밋 취소하기

git reset --soft HEAD~3  # 최근 3개 커밋을 취소 (파일은 유지)
git reset --hard HEAD~3  # 최근 3개 커밋을 삭제 (파일도 삭제)

 

5. 원격 저장소까지 변경 사항 되돌리기

git reset --hard HEAD~1  # 로컬에서 커밋 취소
git push origin main --force  # 원격 저장소에도 강제로 적용

 

강제 푸시는 다른 팀원들의 변경 사항을 덮어쓸 위험이 있으므로 주의가 필요합니다.

 

--force-with-lease : 안전한 강제 푸시

git push origin main --force-with-lease #마지막으로 가져온 원격 상태와 변함이 없을 때만 푸시

(충돌 방지를 위해 사용 추천합니다.)

 

6. git restore (특정 파일만 커밋에서 제거하기)

커밋 전체가 아니라 특정 파일만 커밋에서 제거하고 싶을 때

git reset HEAD~1 -- <파일명>  # 특정 파일만 스테이징 취소
git restore --staged <파일명>  # `git add` 한 것만 취소 (파일은 유지)

 

 

이로써 깃 커밋취소에 관한 내용을 알아봤습니다.

즐거운 코딩하세요 :)