branchless-workflow
Git-branchless stacked diffs workflow patterns and command reference
What this skill does
# Git-Branchless Workflow Git-branchless enables stacked diffs development - working with multiple commits that build on each other, editing any commit in the stack, and managing PRs efficiently. ## Core Concepts ### Detached HEAD Workflow In git-branchless, you work in **detached HEAD** mode. Main stays put while you stack commits above it. ```bash # Always detach before building a stack git checkout --detach # Or use git record -d to auto-detach git record -d -m "feat: first commit" ``` ### Smartlog Icons | Icon | Meaning | |------|---------| | `◆` | Public commit (on main branch) | | `◯` | Draft commit (your work in progress) | | `●` | Current HEAD position | | `✕` | Abandoned/hidden commit | | `ᐅ` | Current branch indicator | ## Essential Commands ### Visualization ```bash git sl # View commit stack (smartlog) ``` ### Navigation ```bash git prev # Move to parent commit git next # Move to child commit git prev N # Jump N commits up git next N # Jump N commits down git sw -i # Interactive commit selector (fuzzy finder) git sw -i <search> # Pre-filter by search term ``` ### Committing ```bash git record -m "msg" # Commit all changes (no git add needed) git record -c pr/name -m "msg" # Commit + create branch in one step git record -d -m "msg" # Detach from branch, then commit git record -I -m "msg" # Insert commit in middle, auto-rebase children ``` ### Editing Commits ```bash git amend # Amend current commit + auto-restack descendants git reword # Change commit message + auto-restack git restack # Rebase descendants onto amended commit ``` ### Moving Commits ```bash git move -s <src> -d <dst> # Move commit(s) to new parent ``` ### Syncing ```bash git sync # Rebase stack onto local main git sync --pull # Fetch remote + rebase stack ``` ### Submitting PRs ```bash git switch -c pr/name # Create branch at current commit git submit -c @ # Push current branch to remote (first time) git submit # Force-push existing branches (update PRs) ``` ### Housekeeping ```bash git hide <hash> # Hide commit from smartlog git unhide <hash> # Restore hidden commit ``` ### Recovery ```bash git undo # Undo last operation (with confirmation) git undo -i # Interactive undo — browse history ``` ## Common Workflows ### Building a Stack ```bash git checkout --detach git record -m "feat: first feature" git record -m "feat: second feature" git record -m "feat: third feature" git sl # View your stack ``` ### Fixing a Middle Commit ```bash git prev 2 # Go to the commit to fix # make changes... git add . && git amend # Amend + restack descendants git next 2 # Return to top ``` ### Creating PRs for a Stack ```bash # For each commit, create branch and submit git prev 2 git switch -c pr/first-feature git submit -c @ git next git switch -c pr/second-feature git submit -c @ git next git switch -c pr/third-feature git submit -c @ ``` ### Setting Stacked PR Base Branches For true stacked PRs on GitHub: | PR | Base Branch | |----|-------------| | pr/first-feature | `main` | | pr/second-feature | `pr/first-feature` | | pr/third-feature | `pr/second-feature` | ### After PR Merge ```bash git pull origin main git sl # Find merge commit hash git move -s <next-commit> -d <merge-commit-hash> # Recreate branches for remaining commits git switch -c pr/remaining-feature git submit -c @ ``` ### Syncing with Updated Main ```bash git sync --pull # Fetch + rebase stack git submit # Update all PRs ``` ### Recovering from Mistakes ```bash git undo -i # Browse history, find good state, restore ``` ## Interactive Rebase Operations ```bash git rebase -i main ``` In the editor: - `pick` — keep commit as-is - `drop` — remove commit - `fixup` — squash into previous (discard message) - `squash` — squash into previous (combine messages) - Reorder lines to change commit order ## Best Practices 1. **Always detach before stacking** - Use `git checkout --detach` or `git record -d` 2. **Use `git amend` instead of `git commit --amend`** - It auto-restacks descendants 3. **Use `git record` instead of `git add` + `git commit`** - Simpler workflow 4. **Run `git restack` after manual amends** - Fixes abandoned commits 5. **Use `git sync --pull` regularly** - Keep stack updated with main 6. **Create branches only when ready to PR** - Use `git switch -c` or `git record -c` 7. **Force-push updates with `git submit`** - Updates all stacked PRs at once ## Troubleshooting ### "Abandoned commits (✕) showing in smartlog" ```bash git restack # Rebase descendants onto amended commit ``` ### "git sl only shows main / no stack visible" You committed on main. Fix: ```bash git checkout --detach git branch -f main <initial-commit-hash> ``` ### "git submit @ does nothing / skipped" You need a branch AND `--create`: ```bash git switch -c pr/my-feature git submit -c @ ``` ### "Messy graph after PR merge" Move remaining commits onto merge commit: ```bash git pull origin main git sl # Find merge commit hash git move -s <next-commit> -d <merge-commit-hash> ``` ### "Conflict during restack or sync" ```bash # Resolve conflicts in files git add <resolved-files> git rebase --continue ```
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.