Git은 히스토리를 rewrite할 수 있게 합니다 — commit을 amend, rebase, squash하거나 제거하여 — commit을 정리하거나 문제를 해결하기 위해. 강력하지만 신중하게 해야 합니다. 공유된 히스토리를 rewrite하면 심각한 문제를 일으키므로, 그에 관한 규칙이 매우 중요합니다.
히스토리를 rewrite하는 방법
git commit --amend → 가장 최근 commit 수정(메시지 또는 내용)
git rebase -i → commit squash, reword, 재정렬, 편집, 삭제(대화형)
git rebase <branch> → commit을 다른 base 위로 재생(선형 히스토리)
git reset → branch 포인터 이동(버리기/uncommit)
git filter-repo → 많은 commit rewrite(모든 히스토리에서 파일/비밀 제거)
→ 이 모든 것이 commit 해시를 바꿈(rewrite = 새롭고 다른 commit 생성).
황금률
⚠️ push/공유된(다른 사람이 가질 수 있는) 히스토리는 절대 rewrite하지 말 것:
→ rewrite는 commit 해시를 바꿈 → 협업자와 히스토리가 갈라짐
→ 그들은 옛 commit을 가짐; pull이 중복/충돌 생성; 혼돈 발생
→ 모두가 고통스럽게 조정하도록 강요 → 심각한 혼란
✓ 로컬, push하지 않은 commit만 rewrite(공유 전 정리).
✗ 공유 branch에서는 → REVERT(새 취소 commit)를 대신 사용, 안전함.
