Fix local sync detection to compare tree content instead of commits
The previous implementation compared commit hashes from subtree merge
commits, but this didn't account for changes pushed via `subtree push`
which don't create merge commits in the monorepo.
Now compares actual tree hashes:
- Monorepo: git rev-parse HEAD:<prefix>
- Checkout: git rev-parse HEAD^{tree}
If trees match, content is in sync regardless of push/pull direction.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>