Your first push
The whole loop. Two steps will surprise you: push opens the pull request, and
you never press a merge button.
Assumes you have installed garden and logged in.
1. Get a repository
Section titled “1. Get a repository”A folder already on disk:
cd my-projectgarden initExisting files are preserved as untracked.
Or import from GitHub — --from takes owner/repo or a URL, --clone mounts
it at ./web:
garden repo create web --from acme/web --cloneSomething already in garden: garden clone web.
2. Make a change
Section titled “2. Make a change”garden statusgarden add .garden commit -m "add rate limiting to the ingest endpoint"There is no staging area. garden add tracks new files; garden commit records
everything pending.
3. Push — this opens the PR
Section titled “3. Push — this opens the PR”garden pushThere is no garden pr create. push is stack-aware: it pushes the current
commit and all its draft ancestors, bottom-up, opening or updating one pull
request per commit. Each PR is diffed against its parent, so a reviewer sees one
logical change at a time.
-m sets the top commit’s PR title on first push; otherwise each commit’s first
message line is used.
Check what’s outstanding with garden stack or garden pr list.
4. Review
Section titled “4. Review”garden review 42garden review comment 42 --file src/api.go --line 88 -b "This needs a bound."garden review submit 42 --approvegarden review 42 prints the diff with threads inline. Comments are drafts
until you submit, so you can work through a whole diff and publish once. See
Code review.
5. Land it
Section titled “5. Land it”garden pr merge 42This enqueues the PR. Once it is mergeable — owner approval, green CI, every thread resolved — the merge queue rebases it onto the current head, re-tests, and lands it.
garden pr checks 42garden pr wait 42 --for mergedgarden pr wait exits 0 when the condition is met and 124 on timeout, so it
drops straight into a script or an agent loop.
6. Move on
Section titled “6. Move on”garden pullpull fetches and restacks, rebasing your remaining stack onto the new head.
Commits that already landed drop out.
The whole thing
Section titled “The whole thing”garden auth logingarden repo create web --from acme/web --clonecd web# ... edit ...garden commit -m "add rate limiting"garden pushgarden review 42garden pr merge 42- Stacked commits — what
pushactually did. - Code review — why comments survive rebases.
- CLI reference — every command and flag.