Fix: git push rejected (non-fast-forward)

You tried to push your changes and git slapped you with this: ! e h h r i i [ r n n r o t t e r : : j : e U i c f p t t a d s e i a d l t r ] e e e d s m o t w t o e e r p e c u o s r u m h e n a j t i s e e n o c r m t p e e a d r r t m e b . a f e i s c n a t u ( o s n e o n o t - r h f i e a g s i t t n i - ' p f o o r f w a y r o d u ) r c u r r e n t b r a n c h i s b e h i n d This is one of the most common git errors, and it’s actually git protecting you from accidentally overwriting someone else’s work (or your own work from another machine). ...

March 31, 2026 Β· 4 min Β· 791 words Β· Rob Washington

Git Workflows That Actually Scale

Every team reinvents Git workflows. Most end up with something that worked for three people but breaks at fifteen. Here’s what actually scales. The Problem With β€œWhatever Works” Small teams can get away with anything. Push to main, YOLO merges, commit messages like β€œfix stuff” β€” it all works when you can shout across the room. Then the team grows. Suddenly: Two people edit the same file and spend an hour on merge conflicts Nobody knows what’s in production vs staging β€œWhich commit broke this?” becomes an archaeological dig Releases are terrifying because nobody’s sure what changed The solution isn’t more process. It’s the right process. ...

March 13, 2026 Β· 9 min Β· 1718 words Β· Rob Washington

Git Workflows: Branching Strategies That Don't Cause Fights

Every team argues about Git workflow until they pick one and stick with it. Here are the major strategies, when to use each, and how to avoid the common pitfalls. The Three Main Workflows 1. GitHub Flow (Simple) m f f a e e i a a n t t u u ─ r r ─ e e ─ - - ─ a b ─ ● ─ ─ ● ─ ─ ─ ─ ─ ─ ● ● ─ ─ ─ ─ ─ ─ ─ ● ─ ● ─ ─ ─ ─ ─ ● ─ ─ ● ─ ─ ─ ─ ─ ─ ● ● ─ ─ ─ ─ ─ ● ─ ─ ─ ─ ─ Rules: ...

March 12, 2026 Β· 9 min Β· 1805 words Β· Rob Washington

Dotfiles Management: Your Dev Environment as Code

New machine? Reinstall? Your perfect dev environment should be one command away. Here’s how to manage dotfiles properly. The Problem You spend hours configuring: Shell (zsh, bash) Editor (vim, nvim, VS Code) Git config SSH config Tmux Aliases and functions Then you get a new laptop and do it all again. Badly. The Basic Solution Put dotfiles in a Git repo, symlink them. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # Create repo mkdir ~/dotfiles cd ~/dotfiles git init # Move configs mv ~/.zshrc ~/dotfiles/zshrc mv ~/.vimrc ~/dotfiles/vimrc mv ~/.gitconfig ~/dotfiles/gitconfig # Create symlinks ln -sf ~/dotfiles/zshrc ~/.zshrc ln -sf ~/dotfiles/vimrc ~/.vimrc ln -sf ~/dotfiles/gitconfig ~/.gitconfig # Push to GitHub git remote add origin git@github.com:username/dotfiles.git git push -u origin main Stow: Symlink Manager GNU Stow makes symlinks manageable: ...

March 11, 2026 Β· 7 min Β· 1469 words Β· Rob Washington

Git Workflow Strategies That Scale

Every team argues about Git workflow. Trunk-based vs. GitFlow vs. GitHub Flow vs. whatever the latest thought leader is promoting. The arguments miss the point: the best workflow is the one that fits your team, your deployment cadence, and your risk tolerance. The Spectrum Git workflows exist on a spectrum from β€œmove fast” to β€œcontrol everything.” T r u n β”‚ β”œ β”œ β”œ β”” k ─ ─ ─ ─ - B F C F S a a I e m s s / a a e t C t l d D u l i r ← t r e P ─ e e R ─ r q f s ─ a u l ─ t i a ─ i r g ─ o e s ─ n d ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ β†’ G i t F l o β”‚ β”œ β”œ β”œ β”” w ─ ─ ─ ─ M M L F u a o o l n n r t u g m i a - a p l l l l i e r v v e e e r l d r e e s l a b i e s r o a e a n s s n i e c n h g t e r s a c k s Neither end is wrong. They optimize for different things. ...

March 11, 2026 Β· 10 min Β· 2030 words Β· Rob Washington

Git Hooks: Automate Your Workflow at the Source

Git hooks are scripts that run automatically at specific points in the Git workflow. They’re perfect for enforcing standards, running tests, and automating tedious tasksβ€”all before code leaves your machine. Hook Locations Hooks live in .git/hooks/. Git creates sample files on git init: 1 2 3 4 5 6 ls .git/hooks/ # applypatch-msg.sample pre-commit.sample # commit-msg.sample pre-push.sample # post-update.sample pre-rebase.sample # pre-applypatch.sample prepare-commit-msg.sample # pre-merge-commit.sample update.sample Remove .sample to activate. Hooks must be executable: ...

March 5, 2026 Β· 5 min Β· 970 words Β· Rob Washington

Git Workflow Strategies: Choosing What Works for Your Team

Your Git workflow affects how fast you ship, how often you break things, and how much your team fights over merge conflicts. Choose wisely. The Contenders Git Flow The traditional branching model with long-lived branches: m a i β”” n ─ ─ ( p d r e o v β”œ β”œ β”” d e ─ ─ ─ u l ─ ─ ─ c o t p f f r i e e e o ( a a l β”” n i t t e ─ ) n u u a ─ t r r s e e e e h g / / / o r u p 2 t a s a . f t e y 0 i i r m x o - e / n a n c ) u t r t - i h s t y i s c t a e l m - b u g How it works: ...

March 4, 2026 Β· 9 min Β· 1754 words Β· Rob Washington

Git Hooks: Automate Quality Checks Before Code Leaves Your Machine

Git hooks are scripts that run automatically at specific points in your Git workflow. Use them to catch problems before they become PR comments. Here’s how to set them up effectively. Hook Basics Git hooks live in .git/hooks/. They’re executable scripts that run at specific events: 1 2 3 4 5 6 .git/hooks/ β”œβ”€β”€ pre-commit # Before commit is created β”œβ”€β”€ commit-msg # After commit message is entered β”œβ”€β”€ pre-push # Before push to remote β”œβ”€β”€ post-merge # After merge completes └── ... To enable a hook, create an executable script with the hook’s name: ...

March 1, 2026 Β· 5 min Β· 1056 words Β· Rob Washington

Git Workflow Patterns for Solo and Team Development

Git is powerful. It’s also easy to mess up. Here are workflows that keep repositories clean and teams productive. Solo Workflow For personal projects, keep it simple: 1 2 3 4 5 6 # Work on main, commit often git add -A git commit -m "Add user authentication" # Push when ready git push origin main Use branches for experiments: 1 2 3 4 git checkout -b experiment/new-ui # work... git checkout main git merge experiment/new-ui # or delete if failed Feature Branch Workflow The most common team pattern: ...

February 28, 2026 Β· 7 min Β· 1385 words Β· Rob Washington

Git Hooks: Automate Quality Before It's Too Late

Code review catches problems. CI catches problems. But the fastest feedback loop? Catching problems before you even commit. Git hooks run scripts at key points in your workflow. Use them to lint, test, and validate β€” automatically. Where Hooks Live 1 2 3 4 5 6 ls .git/hooks/ # applypatch-msg.sample pre-commit.sample # commit-msg.sample pre-push.sample # post-update.sample pre-rebase.sample # pre-applypatch.sample prepare-commit-msg.sample # pre-merge-commit.sample update.sample Remove .sample to activate. Hooks must be executable (chmod +x). ...

February 27, 2026 Β· 6 min Β· 1159 words Β· Rob Washington