Glen works from three Macs: the mini in the home office, the MacBook Air when traveling, and the office iMac at the shop (shared with Natasha). All three pull from the same GitHub repos and run the same project workflow.
The four rules below keep work from getting lost when switching between them. They cover the same ground every time: what to do first, what to do last, what to always do, and what to never do.
git -C ~/projects-hub pull
git -C ~/MasseyElectric pull
(Add a line for any other project you're going to touch — e.g. git -C ~/rebates pull.)
cd ~/projects-hub && claude
Replace projects-hub with whatever project you're working in. Whatever folder you cd into is where Claude operates — that's why we kept it separate from step 2.
The whole "first thing" sequence takes under a minute. Skipping it is how out-of-sync state happens.
For every project you touched today:
git statusgit pushFor hub sessions specifically, additionally:
Then close the Claude Code session and the Terminal tab cleanly. Don't leave a session running overnight on a machine you might not return to.
~/MasseyElectric on the mini AND on the office iMac simultaneously — they'll race each other for commits and one will overwrite the other.MasseyOffice. Nat logs in as nat554. GitHub commits track who did what — sharing accounts breaks attribution and accountability.theoffice@masseyelectric.ca identity for clasp, Google Workspace, and Claude Code. That's the company's identity for Apps Script and Workspace work. All three machines use the same Anthropic and Google account for these.~/projects-hub, not projects-hub. ~/MasseyElectric/scripts/..., not "the project-automation folder."git push --force unless you have thought through exactly what you would overwrite. Force-push rewrites history on the remote and can erase someone else's work silently.~/.claude/projects/.../memory/ is per-machine and does NOT sync via git. If a memory was written on the mini, opening hub later on the office iMac will not see it. Important context goes in committed repo files (Mission Control, README, handoff briefs)..git/ directories by hand. Always go through git commands.theoffice@ shared account is the exception, and only for Google Workspace, clasp, and Claude Code (the shared office identity for shared office work).clasp push from a directory that isn't the right clasp project. It'll either do nothing useful or push to the wrong target.git pull on the current machine.
git pull says I have merge conflicts."
Don't panic. Don't reset. Open the conflicted files. Find the <<<<<<< / ======= / >>>>>>> markers. Decide which version is correct (or merge them by hand). Save. Then git add <file> and git commit. If unsure, open a Claude session and ask before committing — losing work to a wrong resolution is worse than waiting for an answer.
[ahead 3] or [behind 2] in git status."
Ahead = you have local commits not on origin — git push. Behind = origin has commits you don't — git pull. Resolve before doing anything else.
claude /login. Sign in as theoffice@masseyelectric.ca on any of the three machines.
clasp push says my token is expired."
Run clasp login and sign back in as theoffice@masseyelectric.ca.
git config --global --get user.name and git config --global --get user.email. On any of Glen's three Macs, name should be Glen Strange and email should be theoffice@masseyelectric.ca. Reset with git config --global user.name "..." and git config --global user.email "...".
gh repo clone fails with 'Could not resolve to a Repository.'"
The GitHub account you're logged in as doesn't have access to that repo. Run gh auth status to check. On all three of Glen's machines, gh should be logged in as MasseyOffice. If it's a different account, run gh auth logout and gh auth login --web.
| Mini (home office) | MacBook Air | Office iMac | |
|---|---|---|---|
| macOS user | glenstrange | Glen's user | Nat (shared) |
| Home directory | /Users/glenstrange |
Glen's /Users/<name> |
/Users/Nat |
| git identity | Glen Strange / theoffice@masseyelectric.ca | same | same |
| GitHub auth (gh) | MasseyOffice | MasseyOffice | MasseyOffice |
| Claude Code login | theoffice@masseyelectric.ca | theoffice@masseyelectric.ca | theoffice@masseyelectric.ca |
| clasp login | theoffice@masseyelectric.ca | theoffice@masseyelectric.ca | theoffice@masseyelectric.ca |
rebates repo |
present (origin: MasseyOffice/rebates) | clone with gh repo clone MasseyOffice/rebates |
clone with gh repo clone MasseyOffice/rebates |
dashboard/index.html)dashboard/three-machine-protocol.html)~/.claude/projects/.../memory/).claude/settings.local.json (per-machine permissions)If you need something to be available on all three machines, commit it to a repo. Memory and shell history won't carry over.
Open a Claude Code session in ~/projects-hub and ask the hub PM. The hub PM session knows the current state of all three machines (from the most recent memory) and can walk you through the right next step.