Tagged: Workflows
A First CI Pipeline for a Laravel Project
Install, lint, test, build - four jobs that run on every pull request and turn 'works on my machine' into a check everyone can see.
21 October 2026 · 2 min readA Staging Environment Worth Having
Staging only catches what it shares with production. Same deploy path, same services, sanitized data - and a clear rule for what it is for.
21 October 2026 · 2 min readBranch Naming Conventions That Scale Past Three People
Branch names are a user interface for your team's work. The conventions that survive growth, the ones that collapse, and why boring always wins.
21 October 2026 · 3 min readBranch Protection Rules That Stick
Three rules cover most of the risk on main: review required, tests green, no force-push. More than that tends to get routed around.
21 October 2026 · 2 min readCODEOWNERS Files: Automatic Reviewers for the Risky Parts of Your Repo
A CODEOWNERS file routes reviews to the people who know each part of the codebase. How the syntax works, where Laravel teams get the most value, and the failure modes to avoid.
21 October 2026 · 2 min readConventional Commits for a Small Team
A prefix on every commit message - feat, fix, chore - makes the log scannable and the changelog half-written. Keep the rules short or the team routes around them.
21 October 2026 · 2 min readDeploy With Tags, Not Branches
Environment branches drift, get force-pushed, and lie about what is live. A deploy that checks out a tag is boring, reproducible, and honest.
21 October 2026 · 2 min readDoes Your Team Need a Merge Queue? Probably Not Yet
Merge queues solve a real problem - broken main from semantically conflicting PRs - but the cure is heavier than the disease until a specific threshold. How to tell when you have crossed it.
21 October 2026 · 2 min readUse Draft Pull Requests to Get Feedback Early
Open the PR before the work is done. A draft invites direction-level feedback while changes are still cheap, and it shows the team what is in flight.
21 October 2026 · 2 min readFeature Flags: How to Merge Daily Without Shipping Half-Built Work
Long-lived feature branches exist because unfinished code cannot go to production. Feature flags remove that premise - and pair naturally with trunk-based development.
21 October 2026 · 3 min readGit Bisect: Find the Commit That Broke It
The tests passed last week and fail now. Bisect turns 'somewhere in these 40 commits' into six test runs.
21 October 2026 · 2 min readManaging .env Files Across Environments
Local, staging, production - each needs its own .env, none of them belongs in Git. The setup that keeps secrets out and onboarding fast.
21 October 2026 · 2 min readMerging vs Rebasing on a Small Team
Rebase to tidy your own branch, merge to combine into main. One sentence of policy saves a lot of history arguments.
21 October 2026 · 1 min readMonorepo or Many Repos for a Small Laravel Team
One repo for the app and its packages, or a repo per package? For small teams the boring default wins: start with one repo and split only when it hurts.
21 October 2026 · 2 min readOnboarding a New Developer to Your Git Workflow
A new hire's first week sets their Git habits for years. Write down the five decisions, automate the enforceable ones, and pair on the first PR.
21 October 2026 · 2 min readPull Request Templates That People Actually Fill In
A PR template should make good descriptions the path of least resistance. What to put in one, what to leave out, and why shorter always wins.
21 October 2026 · 3 min readRollback or Roll Forward? Decide Before You Need To
When a deploy breaks production, you either go back or fix ahead. The right answer depends on your migrations, your data, and how fast each path is.
21 October 2026 · 2 min readShipping a Hotfix Without the Drama
Branch from the live tag, fix one thing, tag the release, merge back. A hotfix is a small normal deploy, not a breach of process.
21 October 2026 · 2 min readSquash Merge or Merge Commit: Choosing at the PR Button
The merge button offers three histories for the same code. Pick by what the branch's commits are worth, not by habit.
21 October 2026 · 2 min readThe Reflog: Undoing Almost Anything in Git
Reset too far, deleted the wrong branch, botched a rebase? The reflog remembers where HEAD has been, and that is usually enough.
21 October 2026 · 2 min readTrunk-Based Development on a Small Laravel Team
Short-lived branches into main beat long feature branches: smaller merges, a main that always runs, and deploys that stay boring.
21 October 2026 · 1 min readWhat Not to Commit in a Laravel Project
vendor, .env, caches and build output: the short list of what stays out of the repo, and the .gitignore that keeps it out.
21 October 2026 · 1 min readWhat to Do in a Detached HEAD
Detached HEAD sounds like an injury. It is just HEAD pointing at a commit instead of a branch - safe to look around, one command to keep any work.
21 October 2026 · 2 min readWhen to Reset, Restore or Revert
Three commands that all undo something in Git. The right one depends on what state you are undoing and whether anyone else has seen it.
21 October 2026 · 2 min readWhy Git Blame Is Not About Blame
Blame answers 'why does this line exist', not 'who do I talk to about breaking it'. Used well it is the fastest route from a strange line to the decision behind it.
21 October 2026 · 2 min readWhy You Should Force Push With --force-with-lease
Rewriting your own branch is normal after a rebase. --force-with-lease makes the push refuse to run if someone else touched the branch since your fetch.
21 October 2026 · 2 min readWriting a CONTRIBUTING.md People Actually Read
A contributing guide is not a legal document - it is the answer to 'how do I get this running and get a PR in.' The sections that earn their place, in the order a newcomer needs them.
21 October 2026 · 2 min readWriting a Postmortem That Actually Changes Something
Most postmortems are written, nodded at, and never read again. The difference between theater and change is three sections written honestly: timeline, contributing factors, and actions with owners.
21 October 2026 · 2 min readZero-Downtime Deploys for Laravel, Explained Simply
Releases in directories, a symlink swap, and migrations that run before code. The boring structure behind deploys nobody notices.
21 October 2026 · 2 min readA Secret Got Committed. Now What?
Rotate first, scrub second, prevent third. The order matters more than the tooling.
18 October 2026 · 2 min readGit Hooks That Earn Their Place on a Laravel Project
Three hooks that catch real problems: Pint before commit, tests before push, and a sane commit message check.
17 October 2026 · 1 min readCode Review Habits That Keep Main Clean
Small changes, clear descriptions and fast feedback.
15 October 2026 · 1 min readShipping a Laravel App From Git
Keep deploys boring: build from a tagged commit, migrate, cache.
15 October 2026 · 1 min read