깃 로그에 올리지 말아야할 정보(ip, 계정)를 올리게 되어, 커밋 로그를 삭제하는 방법을 정리하게 되었습니다.
git log --oneline
예제
a1b2c3d Fix: 버그 수정
e4f5g6h Feat: 새로운 기능 추가
i7j8k9l Refactor: 코드 리팩토링
git reset --soft HEAD~1
커밋은 취소되지만, git add (파일 변경 내용) 그대로 남게 됩니다.
(다시 git commit 하면 변경 내용을 재사용 가능합니다.)
git reset --mixed HEAD~1
커밋과 git add 한 내용도 취소됨
(변경된 파일 내용은 그대로 유지됨)
git reset --hard HEAD~1
변경 사항이 모두 삭제되므로 신중하게 사용해야 합니다.
(커밋 내용 + 변경된 파일 내용까지 삭제됩니다.)
git reset --hard <커밋 해시>
예제
a1b2c3d Fix: 버그 수정
e4f5g6h Feat: 새로운 기능 추가
i7j8k9l Refactor: 코드 리팩토링
git reset --hard e4f5g6h 를 실행하면, 해당 커밋(e4f5g6h)이 최종 커밋이 되고, 그 이후의 커밋(a1b2c3d)이 리셋됩니다.
git revert <커밋 해시>
취소된 내용이 새로운 커밋으로 남음 (기록 유지)
(팀 프로젝트에서 공유된 커밋을 취소할 때 가장 안전한 방법)
git reset --soft HEAD~3 # 최근 3개 커밋을 취소 (파일은 유지)
git reset --hard HEAD~3 # 최근 3개 커밋을 삭제 (파일도 삭제)
git reset --hard HEAD~1 # 로컬에서 커밋 취소
git push origin main --force # 원격 저장소에도 강제로 적용
강제 푸시는 다른 팀원들의 변경 사항을 덮어쓸 위험이 있으므로 주의가 필요합니다.
git push origin main --force-with-lease #마지막으로 가져온 원격 상태와 변함이 없을 때만 푸시
(충돌 방지를 위해 사용 추천합니다.)
커밋 전체가 아니라 특정 파일만 커밋에서 제거하고 싶을 때
git reset HEAD~1 -- <파일명> # 특정 파일만 스테이징 취소
git restore --staged <파일명> # `git add` 한 것만 취소 (파일은 유지)
이로써 깃 커밋취소에 관한 내용을 알아봤습니다.
즐거운 코딩하세요 :)
[Git] Commit 이메일 일괄 변경 방법 (0) | 2025.03.07 |
---|---|
[Github] draw.io 깃허브에 자동 업로드 (0) | 2025.02.28 |
[Github] 알고리즘 문제풀이 깃허브에 자동 업로드 with 백준허브 (0) | 2024.12.29 |
[Git] Clone/Pull/Push 시 계정 묻지 않게 하는 방법 (0) | 2024.06.27 |
깃 커밋 메세지 가이드 (Git Commit Message Guide) (0) | 2024.05.30 |