--- type: workflow tags: [infra, workflow, local, git, sync, developer, cli] last_updated: 2026-03-23 --- # 로컬 개발자 워크플로우 ## 상위 원칙 - [0_VALUE Global Principles](https://github.com/happybell80/0_VALUE/blob/main/00_Principles/global-principles.md) §C (커밋/푸시 룰) - [0_VALUE Workspace Config](https://github.com/happybell80/0_VALUE/blob/main/02_Governance/workspace-config/README.md) - [../00_Philosophy/00_IDENTITY/Infra_Project_Identity.md](../00_Philosophy/00_IDENTITY/Infra_Project_Identity.md) ## 관련 문서 - [../README.md](../README.md) - [./README.md](./README.md) - [CLI 세션 재개·코딩 에이전트 연속 대화 (로빙 DOCS)](https://git.ro-being.com/ivada_Ro-being/DOCS/-/blob/main/journey/research/orchestration_tools/260323_CLI_세션_재개_섹션_연속대화_및_자동화_리스크.md) — 터미널에서 세션 ID·재개로 작업 구획 유지, **호스트마다 세션 저장 위치가 달라 23/24 전환 시 자동 이어짐을 가정하지 말 것**, 무인 CLI 자동화는 벤더 정책·레이트리밋과 충돌 가능 ## 목적 - 로컬 PC(워크스페이스 루트)에서 전체 레포 동기화·푸시·상태 확인을 같은 순서로 수행합니다. - 사람과 에이전트가 같은 문서를 읽고 같은 기준으로 로컬 작업을 수행합니다. ## 적용 범위 - 전체 레포 `git pull` - 작업 전/후 `git status` 확인 - 변경·미추적 파일 add·커밋·푸시 (레포 단위) ## 기본 원칙 - 워크스페이스 루트는 환경마다 다릅니다. 로컬 PC의 경우 예: `$HOME/projects` 또는 `$WORKSPACE_ROOT`. - 스크립트·경로는 `$WORKSPACE_ROOT` 기준 상대 경로로 해석합니다. - 교차 저장소 단일 커밋 금지. 각 레포별로 add·커밋·푸시합니다. - **커밋 범위**: 사용자 지시가 없는 한, 기존 미커밋 변경은 내 작업과 함께 커밋하지 않습니다. 사용자가 "푸시해 모두" 등으로 명시 지시한 경우에만 해당 레포 내 변경 전부를 add·커밋·푸시 대상에 포함합니다. - **workspace-config 경계**: `runtime.env`, `secrets.env`는 공용 기준(구조·키·역할)의 SSOT입니다. 실제 값 파일은 `.gitignore`·비추적·로컬 오버라이드 전용이며, 커밋 대상에 포함하지 않습니다. ## 표준 흐름 ### 1. 전체 레포 pull "깃풀해줘" 요청 시 또는 작업 시작 전 동기화: ```bash # $WORKSPACE_ROOT/scripts/git_pull_all.sh 실행 # 기본값: /home/happybell/projects (로컬 PC) "$WORKSPACE_ROOT/scripts/git_pull_all.sh" # 또는 "$WORKSPACE_ROOT/scripts/git_pull_all.sh" "$WORKSPACE_ROOT" ``` 판단 기준: - `pull 성공: N개` 출력 - 실패 시 해당 레포만 수동 확인 후 재시도 ### 2. 작업 전 상태 확인 ```bash cd "$WORKSPACE_ROOT" find . -name ".git" -type d -not -path "./trash_*" 2>/dev/null | while read d; do dir=$(dirname "$d") out=$(cd "$dir" && git status -sb 2>/dev/null) if echo "$out" | grep -qE '\[(ahead|behind)\]|^ M|^M |^\?\?'; then echo "=== $dir ==="; (cd "$dir" && git status --short) fi done ``` ### 3. 작업 종료 전 정리 각 변경된 레포에서 (사용자 명시 지시가 있는 경우에만 해당 레포 내 변경 전부 포함): ```bash cd "$REPO_PATH" git add -A git status # 확인 git commit -m "적절한 메시지" git push ``` - **push reject 시**: `git pull --rebase` 후 `git push` 재시도. - 미커밋 상태가 남으면 이유(보류/폐기/후속작업)를 명시합니다. - "완료" 보고는 커밋 해시/푸시 브랜치 기준으로만 합니다. ### 4. 스크립트 위치 | 스크립트 | 경로 | 용도 | |----------|------|------| | git_pull_all.sh | `$WORKSPACE_ROOT/scripts/git_pull_all.sh` | 전체 레포 일괄 동기화 전용 | - **주의**: 이 스크립트는 `--no-rebase`로 동작합니다. 일괄 pull에만 쓰고, 개별 레포의 기본 pull 전략으로 삼지 않습니다. push reject 시에는 해당 레포에서 `pull --rebase` 후 push. - 스크립트가 없으면 `scripts/` 폴더에 생성 후 실행 권한 부여합니다. ## 참고 - `projects` 루트는 Git 레포가 아닐 수 있습니다. 실제 하위 레포를 식별해 처리합니다. - `trash_*` 폴더는 검색에서 제외합니다.