본문 바로가기
Computer Science/Git

커밋 히스토리를 지우는 방법

by Wikinist 2023. 7. 23.

커밋 히스토리를 지우는 작업은 주의해야 할 점이 많으며, 역사적인 변경 사항을 영구적으로 제거하는 것이므로 신중하게 사용해야 합니다. 커밋 히스토리를 지우는 방법은 다음과 같습니다.

주의: 커밋 히스토리를 수정하거나 삭제하는 작업은 원격 저장소와 공동 작업 중인 경우에는 권장하지 않습니다. 다른 사용자의 변경 내용과 충돌을 일으킬 수 있고, 원격 저장소의 히스토리가 꼬일 수 있습니다. 이런 작업은 개인 프로젝트에서만 시도하는 것이 좋습니다.

git reset 명령어

이 방법은 가장 최근의 커밋부터 지정한 커밋까지의 히스토리를 수정합니다. 그러나 이 방법은 원격 저장소에 푸시한 후에는 사용하지 말아야 합니다.

# 최근 3개의 커밋을 지우고 해당 변경사항은 스테이징 영역으로 유지
git reset HEAD~3

git rebase -i 명령어

이 방법은 더욱 정교한 히스토리 수정을 할 수 있습니다. 원하는 커밋을 선택하여 수정하거나 삭제할 수 있습니다. 이 방법은 git rebase를 사용하므로 원격 저장소에 푸시한 후에는 사용하지 말아야 합니다.

# 가장 최근 5개의 커밋 중에서 수정하고 싶은 커밋 선택
git rebase -i HEAD~5

git filter-branch 명령어

이 방법은 더욱 강력한 커밋 히스토리 수정 방법입니다. 해당하는 커밋을 완전히 제거하거나 변경할 수 있습니다. 원격 저장소에 푸시한 후에는 사용하지 말아야 합니다.

# 커밋 메시지에 "sensitive info"가 포함된 커밋들을 완전히 제거
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch -r .' --prune-empty --msg-filter 'cat' -- --all

GitHub BFG Repo-Cleaner

더욱 안전하고 편리한 방법으로 원격 저장소에서 민감한 정보를 제거하는 도구입니다. 사용하기 전에 복사본을 만들고 사용하도록 합니다.

위의 방법들은 커밋 히스토리를 수정하거나 삭제하는 방법입니다. 하지만 히스토리를 수정하면서 다른 사용자들과의 협업에서 충돌이 발생할 수 있으므로 주의해야 합니다. 특히 원격 저장소에 푸시한 이후에는 변경 사항이 남아있을 수 있으므로, 가능한 경우 민감한 정보를 커밋하지 않도록 주의하는 것이 좋습니다.

위 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Computer Science > Git' 카테고리의 다른 글

Gitlab 모듈 설치  (0) 2023.07.20
Git을 이용한 파이썬 패키지 관리  (0) 2023.07.20
VS Code에서 Git 사용  (0) 2023.07.04