agentleFS
komlukkomluk/scaffolding/skills/git-operations/SKILL.md

git-operations

Skill16 starsChanged 4 days agoMITView on GitHub

Git command patterns, branching strategy, and safety protocols. TRIGGER when: managing branches, resolving merge conflicts, or running commit/merge/push operations. SKIP: worktree lifecycle and isolation recovery (use worktree-management); CI automation (use github-actions-template).

  • Commits and pushes

5 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 6 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 4 edited versions we read keep these.

  • 6

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    NEVER use --force or --force-with-lease without explicit user confirmation

    line 76
  2. Distinctive:

    Always verify unpushed commits BEFORE push

    line 77
  3. Distinctive:

    Always verify push success AFTER push

    line 78
  4. Distinctive:

    If push fails due to divergence, report to user -- do NOT auto-rebase

    line 79
  5. Distinctive:

    After work is complete on a branch, execute one of these four actions based on context.

    line 83
  6. Distinctive:

    Never delete remote branches here.

    line 103
  7. Distinctive:

    Put the result in the final report (Worktree Cleanup table).

    line 104

“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Git Operations Skill

Purpose

Core git command patterns, branching strategies, and safety protocols for a project.

Current branch: !git branch --show-current 2>/dev/null || true

Branching Convention

Branch PatternPurpose
mainProduction branch, always stable
scaffolding/{task_id[:12]}Worktree task branches (auto-created)
backup/{task_id[:12]}Safety backup before destructive ops

Safe Operation Patterns

Before Any Destructive Operation

git status
git stash list
git log --oneline -5
git branch backup/$(date +%s) HEAD

Merge Strategy

git merge --no-commit --no-ff branch_name
git diff --cached --stat
git merge --continue  # or --abort

Conflict Resolution

git diff --name-only --diff-filter=U
git checkout --ours path/to/file    # keep ours
git checkout --theirs path/to/file  # keep theirs

Cherry-Pick

git cherry-pick --no-commit <commit>
git diff --cached --stat
git cherry-pick --continue

Common Error Patterns

ErrorFix
fatal: not a git repositoryVerify path, check .git exists
CONFLICT (content)Use conflict resolution protocol
cannot lock refWait and retry, check stale locks
worktree is not cleanStage+commit or stash

Push Operations

Standard Push (after workflow)

# 1. Verify unpushed commits exist
git log --oneline origin/main..HEAD

# 2. Push to remote
git push origin main

# 3. Verify push succeeded
git log --oneline origin/main..HEAD  # should be empty

Push Safety Rules

  • NEVER use --force or --force-with-lease without explicit user confirmation
  • Always verify unpushed commits BEFORE push
  • Always verify push success AFTER push
  • If push fails due to divergence, report to user -- do NOT auto-rebase

Finishing Flow

After work is complete on a branch, execute one of these four actions based on context.

Merge to Main

git checkout main
git merge --ff-only <branch>  # try fast-forward first
# if ff fails: git merge --no-ff <branch>
# MANDATORY cleanup -- see Post-Merge Cleanup

Post-Merge Cleanup (MANDATORY final step of every merge)

Applies to ff, --no-ff, and squash merges (PR merged via gh/Gitea too). Squash merges are invisible to git branch --merged.

# from the main checkout, never from inside the worktree
git -C <worktree> status --porcelain --untracked-files=no   # must be empty
git worktree remove <worktree>        # --force only for untracked build output (node_modules)
git branch -D <branch>
git worktree prune
  • Uncommitted tracked changes -> REFUSE, keep worktree + branch, report the files.
  • Never delete remote branches here. Never touch the main checkout.
  • Put the result in the final report (Worktree Cleanup table).
  • Stale leftovers: /worktree-gc (dry run by default).

Create PR

git push -u origin <branch>
gh pr create --title "<title>" --body "<body>"
# keep branch and worktree

Keep Branch

# no action needed -- branch stays as-is
git push -u origin <branch>  # optional: push to remote for safety

Discard Branch

git checkout main
git worktree remove .scaffolding/worktrees/<task_id> 2>/dev/null
git branch -D <branch>
git worktree prune

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.