Git - remote에 커밋한 내용 되돌리기

8 June 2020 · 1 minute read

git에서 원격 저장소에 이미 커밋한 내용을 되돌리는(rollback) 방법은 두 가지가 있다:

  1. 특정 커밋으로 강제 push
  2. revert 커밋 생성 후 push

특정 커밋으로 강제 push

아주 간단하고 강력한 방법으로, 원격 저장소에 커밋한 내용을 완전히 삭제할 수 있다. 개인용이거나 작업자가 많지 않은 저장소, 혹은 아직 병합(merge)되지 않은 브랜치와 같은 곳에서 효과적으로 사용할 수 있다.

명령어도 간단하다. 다음과 같은 한 줄이면 즉시 원격 저장소의 커밋을 손쉽게 되돌린다.

git push -f origin $hash:$remote_branch

$remote_branch 원격 브랜치를 $hash 커밋으로 -f 강제 push 하겠다는 내용이다. $hash 커밋보다 상위 커밋들은 모두 삭제되고 깔끔하게 정리된다.

하지만 이 방법은 여러 작업자에 의해 자주 커밋이 일어나는 저장소에서는 위험한 방법이 될 수 있다. 누군가 작업 기반으로 하고 있는 커밋을 원격에서 날려버릴 수 있는 것. 이러한 저장소는 GitHub과 같은 관리 도구에서 강제 push를 할 수 없도록 설정하기도 한다.

revert 커밋 생성 후 push

첫 번째 방법만큼 간단한 방법이면서 지금까지의 커밋을 그대로 보존하면서 되돌리는(revert) 신규 커밋으로 과거 파일 내용으로 되돌아간다.

git revert $revert_hash
git push

병합 커밋같은 경우 한번의 revert로 과거 파일 내용으로 되돌릴 수 있다.

Updated 8 June 2020