Revert 는 shared history 용 안전한 undo
Reset 은 history 를 rewrite. Revert 는 history 를 inverse commit 으로 확장. git revert <hash> 는 target commit 의 정반대 변경을 가진 새 commit 만들어 — 같은 파일 수정, 반대 방향. History 기록 그대로: 원본 commit 여전히 있고, 그 위에 새 revert commit 이 '그거 undo 함' 표시. push 됐고 남이 그 위에 작업한 commit 의 유일한 안전 undo.
의미가 깨끗해. git revert HEAD 가 가장 최근 commit 의 revert. git revert abc1234 는 그 사이 수십 commit 이 있어도 특정 옛 commit revert. Revert 가 옮기거나 추가 수정된 줄 건드리면 conflict — merge 와 같은 해결 loop: 편집, git add, git revert --continue. git revert --no-edit 는 editor 건너뛰고 Git default 메시지 사용.
Commit 범위는 git revert OLDEST..NEWEST 가 source commit 당 revert commit 하나씩, 역순으로 만들어. 관련 변경 시퀀스 undo 에 유용. --no-commit 은 commit 없이 revert 만 stage — 그게 history 에 더 잘 읽히면 여러 revert 를 한 commit 으로 묶을 수 있어.
특수 케이스: merge commit revert. Merge commit 은 parent 가 둘이라 Git 이 어느 쪽이 유지할 'mainline' 인지 알아야 해. git revert -m 1 <merge-hash> 는 parent 2 (merge-in 된 branch) 에서 들어온 변경을 undo 해서 merge 를 revert, parent-1 history 는 그대로. Merge 된 기능이 망가졌는데 full reset 못 할 때 이게 맞는 동작.