개발팀 슬랙에 "main 날렸습니다" 한 줄이 뜨는 데는 3초가 걸리지 않는다. 그다음 6명이 이틀을 복구에 쏟고, 배포는 1주 밀리고, 이해관계자 신뢰 회복에는 수천만 원이 든다. 실제로 작년 한 스타트업에선 force push 한 번으로 47개 커밋과 3개월치 작업이 증발했다. 복구 비용만 5만 달러(약 7,300만 원). 더 큰 사고는 14명 엔지니어의 3주 작업과 127개 커밋이 한 방에 사라진 케이스도 있다 — 14만 달러.

사라진 코드보다 비싼 것: 팀을 다시 맞추는 시간

2026년 Medium에 공개된 사고 사례는 비용 구조를 적나라하게 보여준다. 엔지니어 한 명이 실수로 main에 force push를 날렸다. 47개 커밋 증발. 복구에 6명이 이틀, 96시간이 투입됐다. 시급 100달러로 계산하면 인건비만 9,600달러(약 1,400만 원). 배포 지연 1주간의 고객 영향은 15,000달러. 사후 대응과 프로세스 재정비에 5,000달러, 이해관계자 신뢰 회복 비용은 20,000달러. 총 49,600달러다.

더 충격적인 건 더 큰 사고의 패턴이다. 14명 엔지니어가 3주 동안 쌓은 127개 커밋이 force push 한 번에 날아갔다. 손실 추산액 14만 달러. 실수는 단순했다 — 정리 중이던 feature 브랜치가 아니라 main을 향해 명령을 내린 것. 코드 자체의 손실보다 팀 전체의 작업 맥락을 재조정하고, 브랜치를 다시 맞추고, 출시 일정을 재조율하는 비용이 훨씬 컸다.

커밋은 거의 지워지지 않는다 — reflog가 시간을 되돌린다

여기 반전이 있다. 대부분의 git 사고는 복구 가능하다. git reflog는 HEAD가 거쳐 간 모든 위치를 로컬에 기록한다. 도달 가능한 커밋은 기본 90일간 유지된다. git gc가 돌기 전까지는 삭제된 것처럼 보이는 커밋도 내부적으로 살아 있다.

실제 복구 사례들은 이 메커니즘을 증명한다. 한 개발자는 force push로 팀원의 2일치 작업을 덮어썼지만, 로컬 reflog와 GitHub PR 캐시에서 커밋 해시를 찾아내 38분 만에 복구했다. 앞서 언급한 14명 사고도, 미리 pull하지 않은 한 엔지니어의 로컬 저장소에 127개 커밋이 모두 남아 있어 2시간 만에 살려냈다. 데이터는 사라지지 않았다. 문제는 각자 다른 로컬 상태를 가진 팀원들을 하나의 기준으로 다시 모으는 조정 비용이다. 이 조정 작업이 사고 대응 시간의 80% 이상을 차지한다는 게 현장의 중론이다.

복구 절차 자체는 단순하다: 추가 변경을 멈춘다 → reflog에서 사고 직전 커밋을 확인한다 → 백업 브랜치를 만든다 → 원복 후 force push → 팀 전체가 재동기화한다. 이 과정을 몰라서 못 한 복구는 단 한 건도 보고되지 않았다.

예방 비용은 20분, 사고 비용은 수만 달러

예방은 명령 한 줄과 설정 몇 분이 전부다. main 브랜치에 force push와 삭제를 막는 branch protection은 GitHub 설정에서 20분이면 끝난다. force push 대신 force-with-lease를 쓰면 원격에 모르는 커밋이 있을 때 푸시가 거부된다. 전역 설정 한 줄로 이 동작을 기본값으로 만들 수 있다: push.forceWithLease true.

rebase나 force push 전에 현재 상태를 백업 브랜치로 저장하는 짧은 스크립트, 사고 시나리오별 복구 runbook도 1시간 안에 작성 가능하다. 실제로 사고 이후 6시간을 복구에 쏟은 팀은 이 절차를 갖춘 뒤 같은 유형의 사고를 8분 만에 해결했다. 이 팀이 공유한 runbook은 불과 1페이지짜리 마크다운 문서였다. 처음 사고가 났을 때는 패닉 상태에서 슬랙으로 서로 물어보느라 6시간을 썼는데, 다음번엔 그 문서를 열어 step 1부터 따라가면서 8분 만에 정리한 것이다.

한국도 상황은 다르지 않다. 티빙은 저장소에 하드코딩된 AWS 키가 공개 커밋에 노출돼 피해를 봤다. 데이원컴퍼니는 GitHub 마스터 계정 키가 탈취됐다. GitGuardian 2026 보고서에 따르면 공개 GitHub 커밋에서 발견된 하드코딩 비밀정보는 2,865만 건, 전년 대비 34% 증가했다. force push 사고와 자격증명 유출은 태생이 같다 — 코드를 다루는 사소한 실수 하나가 전체 서비스의 신뢰를 뒤흔드는 구조.

20분짜리 투자가 14만 달러를 막는다

git 실수의 진짜 비용은 삭제된 코드가 아니라 흩어진 팀을 다시 모으는 시간이다. 복구는 대부분 가능하지만 복구 시간도 결국 돈이다. 반면 예방은 branch protection 20분, force-with-lease 한 줄, runbook 작성 1시간이 전부다.

"우리도 작년에 비슷한 일 겪었어요." 작년 가을 한 IT 서비스 회사의 개발팀장이 점심 자리에서 털어놓은 말이다. 주니어 개발자가 실수로 main을 덮어쓰는 바람에 QA 일정이 통째로 밀렸고, 그 한 주 동안 야근 수당만 400만 원 가까이 나갔다. 네이버 같은 대기업은 내부적으로 force push 차단이 기본인 곳이 많지만, 20~30명 규모 스타트업은 아직 이런 보호 장치 없이 운영되는 경우가 허다하다.

오늘 main 브랜치에 보호 규칙이 걸려 있지 않다면 이번 주 안에 걸어두는 게 맞다. SI 현장에서 필자가 본 가장 비싼 실수들은 대부분 기술 부재가 아니라 그냥 안 해서 생겼다. 20분짜리 설정 하나로 14만 달러와 3주를 지킬 수 있다면, 안 할 이유가 없다.