MacBook Pro(母艦)/ MacBook Air / Mac mini の3台で、works をズレなく回すための運用手順。
~/Downloads/works ⇄ github.com/senao-routine/works(private / main)始める前に pull、離れる前に push。同じフォルダを2台で同時に開かない。
この2つを守っている限り、3台は常に一致します。今まで起きた事故は、ほぼ全て「片方を push し忘れたまま、もう片方で作業を始めた」ことが原因です。
どのMacでも同じ。これだけ覚えれば足ります。
# ① 作業を始める前 — 相手Macの変更を取り込む git pull --rebase origin main # ② 作業したら — 区切りごとに保存 git add -A git commit -m "何をやったか一言" # ③ そのMacを離れる前に必ず — 相手Macへ送る git push origin main
--rebase を付けるのがポイントです。付けないとマージコミットが挟まって履歴が読みにくくなります。端末ごとに一度 git config pull.rebase true を実行しておけば、以後は git pull だけで自動的に rebase になります。
Claude Code で作業している間は、works の auto-sync hook が3方向で肩代わりします。
| タイミング | やること | 効かない条件 |
|---|---|---|
| セッション開始 | git pull --ff-only |
未コミット変更やローカル未pushコミットがあると何もしない(分岐時のみ警告を出す) |
| 毎ターン終了 | 未pushコミットを push | コミットはしてくれない |
| セッション終了 | 未コミット変更を auto commit + push | — |
つまり別のMacへ移る前に、Claude Code のセッションを一度終了する(=SessionEnd で自動 commit+push される)か、手動でコミットする必要があります。これを忘れて向こうで作業を始めると、両方に変更が溜まって分岐します。
また、普通のターミナルだけで作業した日は hook は一切動きません。その場合は 01 の3コマンドを自分で回してください。
「去る側」で確定させてから「行く先」で取り込む。この順番を崩さない。
セッションを閉じれば hook が自動 commit+push。不安なら手動で確定させる。
git status git add -A git commit -m "..." git push origin main
始める前にこれだけ。git status が clean なら pull だけでよい。
git pull --rebase origin main
行く先のMacに未保存の変更が残っていて、それを捨てたくないときは退避してから取り込みます。
git stash git pull --rebase origin main git stash pop
works と違い対等ではありません。ここが最も混同しやすい部分です。
~/.claude だけ。Air・mini は受け取る側です。
# ~/.claude/CLAUDE.md・グローバルコマンド・エージェントを変更したら必ず
bash "Claude設定同期/pull-from-home.sh"
git add -A && git commit -m "claude共通設定を更新" && git push
git pull --rebase origin main
bash "Claude設定同期/apply.sh"
# apply.sh --link にするとシンボリックリンク版=以後 git pull だけで即反映
Air や mini で ~/.claude を直接編集しても、次の apply.sh で消えます。変更は必ず母艦で行ってください。なお settings.json は APIキーを含むため配布対象外で、各Mac個別設定のままです。
慌てず、症状から引く。
| 症状 | 対処 |
|---|---|
| push が rejected (相手が先に push 済み) | git pull --rebase origin main してから git push origin main |
| pull が CONFLICT で止まった | 競合ファイルを開いて残す内容に直す → git add <ファイル> → git rebase --continue |
| rebase をやり直したい | git rebase --abort で一旦元に戻す |
| 「mainが分岐しています」の警告が出た | 両方に未pushコミットがある状態。git pull --rebase origin main で解消 |
| ローカルを全部捨てて相手に合わせたい | git fetch origin && git reset --hard origin/main(ローカル変更は消えるので注意) |
| どっちが新しいか分からない | 各Macで git log --oneline -5 を見比べる/git fetch && git status |
「3台が完全一致」= git + Drive + 秘密情報 の3点セット。日常で意識するのは①だけで十分です。
| レーン | 中身 | 同期の担い手 |
|---|---|---|
| ① git | コード・スキル・ドキュメント(リポジトリ全部) | 01の3コマンド/auto-sync hook |
| ② メディア | 収録動画・完成動画・画像 | Google Drive(works 内は symlink で参照) |
| ③ 秘密・設定 | APIキー・トークン・~/.claude 共通設定 | 移行キット install.sh/apply.sh |
今回の収録動画 完成動画(アップロード) 投稿画像 サムネイル資料 今回のアウトプット。各Macで Google Drive アプリに母艦と同じアカウントでログインしていれば自動で解決します。ログインしていないと動画・画像系が全滅するので最優先。.env(600)、wordpress_config.json、各種 token*.json / credentials.json。AirDrop など安全な手段で配置します。Blog_RoutineLabo/AI_prompt(Auto) は ./venv/bin/python3.14 を直接叩きます(activate 破損のため)。*.mp4 *.mov *.mp3 *.wav は容量が大きく git 非対象。受け渡しは Drive 経由。1回きり。上から順に流すだけで母艦と同じ環境になります。
# 1) 取得(private リポなので先に gh auth login) git clone https://github.com/senao-routine/works.git ~/Downloads/works cd ~/Downloads/works git config pull.rebase true # 2) 秘密情報を配置(AirDrop / USB で受け取った移行キット) bash ~/Downloads/移行キット_秘密情報_*/install.sh # 3) Claude のグローバル設定を母艦と同じに bash "Claude設定同期/apply.sh" # 4) 配線を全数チェック(緑になれば完了) bash .claude/verify-works.sh
二重処理を防ぐ設計:トレンド収集・維持率・コスト集計などの定常ループは母艦だけで回れば十分です。install.sh が二次機に ~/.claude/.works-secondary という印を置き、この印がある機では loop-catchup が即終了します。母艦(印なし)の挙動は一切変わりません。
前提ツール: brew install git gh node python@3.12 ffmpeg / npm i -g @openai/codex。macOS のユーザー名と Drive アカウントは母艦とそろえてください(works 内の Drive symlink が絶対パスのため)。