---
title: "⚖️ 의사결정 — 페이즈1 배포 방식 (force-push → 히스토리보존 merge 전환)"
category: "decision"
parent: "Claude Code 작업보고"
updated: "2026-07-01"
priority: "High"
purpose: "페이즈1 개편본을 프로덕션 main에 적용할 때, 애초 계획했던 force-push(git branch -f main phase1-release) 대신 히스토리보존 merge로 전환한 의사결정과 근거. 브랜치별 index.html 차이(main=운영값/demo=데모값) 처리 방식 포함. 2026-06-29 KB 이후 누락 소급 발행."
read_when: ["페이즈1 배포 방식","force-push vs merge","히스토리 보존 배포","index.html 운영값 복원 배포","main-prephase1 백업","브랜치별 index.html"]
document_type: "의사결정"
source_status: "generated"
knowledge_group: "03_history"
work_timestamp: "20260702_205006"
source_of_truth: "https://dallog-tools.hansbridge.co.kr/knowledge/"
context: "달록본레포CC (D:\\dallog\\dallog_git)."
---

> 관련 작업보고: "페이즈1 main/demo 적용(1블록 배포)". 본 문서는 배포 방식 결정·트레이드오프.

## 1. 결정
프로덕션 main 적용을 **force-push가 아닌 히스토리보존 merge**로 확정.
- `git merge -X theirs phase1-release` + index.html 운영값 복원 → 일반 push(force 불요).

## 2. 초기 계획 → 전환 근거
- **초기(모닝결정 3번)**: `git branch -f main phase1-release && git push --force origin main`(divergent라 force, 구 main은 main-prephase1에 보존).
- **전환 근거**: force-push는 되돌리기 어렵고 협업 리스크. merge는 ①구 브랜치 히스토리 보존 ②일반 push 가능 ③revert 용이. phase1-release가 상위 버전이라 `-X theirs`로 충돌 자동 해소하되, 프로덕션 전용 값(index.html title/favicon)만 별도 복원.

## 3. 브랜치별 index.html 처리 (핵심 함정)
- main = 운영값(달록 — PaceLog / favicon-32.png), demo = 데모값(달록 DEMO / 핫핑크). merge 시 phase1(데모값)이 main에 새어들 수 있어 **index.html 운영값 복원 후 검증**.
- 검증: 병합트리 vs phase1-release 차이 = index.html 4줄뿐 → 회귀·소실 0 확인.
- ※ 이후 2026-07-02 별도 사고(git 꼬임으로 데모 index.html이 커밋에 딸려들어감)로 이 검증의 중요성이 재확인됨 → [의사결정] "main 데모오염 회귀 대응"에서 배포 시 index.html/manifest 운영값 검증을 게이트 규칙으로 등재.

## 4. 안전장치
- 구 프로덕션 main = `main-prephase1`(99cc317) 백업 존치.
- Codex 복수검수 6검증 전부 OK 후 push.
- demo origin 문서커밋 위치충돌은 병합으로 해소(256ca73).
