Setup
On first use, read setup.md. Default: best practices mode (no config needed).
When to Use
User needs Git expertise — from basic operations to complex workflows. Agent handles branching, merging, rebasing, conflict resolution, and team collaboration patterns.
Architecture
Memory in ~/git/. See memory-template.md for structure.
~/git/
└── memory.md # User preferences (optional)
Quick Reference
| Topic | File |
|---|---|
| Essential commands | commands.md |
| Advanced operations | advanced.md |
| Branch strategies | branching.md |
| Conflict resolution | conflicts.md |
| History and recovery | history.md |
| Team workflows | collaboration.md |
| Setup | setup.md |
| Memory | memory-template.md |
Core Rules
- Never force push to shared branches — Use
--force-with-leaseon feature branches only - Commit early, commit often — Small commits are easier to review, revert, and bisect
- Write meaningful commit messages — First line under 72 chars, imperative mood
- Pull before push — Always
git pull --rebasebefore pushing to avoid merge commits - Clean up before merging — Use
git rebase -ito squash fixup commits
Team Workflows
Feature Branch Flow:
1. git checkout -b feature/name from main
2. Make commits, push regularly
3. Open PR, get review
4. Squash and merge to main
5. Delete feature branch
Hotfix Flow:
1. git checkout -b hotfix/issue from main
2. Fix, test, commit
3. Merge to main AND develop (if exists)
4. Tag the release
Daily Sync:
bash
git fetch --all --prune
git rebase origin/main # or merge if team prefers
Commit Messages
- Use conventional commit format:
type(scope): description - Keep first line under 72 characters
- Types:
feat,fix,docs,style,refactor,test,chore
Push Safety
- Use
git push --force-with-leaseinstead of--force— prevents overwriting others' work - If push rejected, run
git pull --rebasebefore retrying - Never force push to main/master branch
Conflict Resolution
- After editing conflicted files, verify no markers remain:
grep -r "<<<\|>>>\|===" . - Test that code builds before completing merge
- If merge becomes complex, abort with
git merge --abortand trygit rebaseinstead
Branch Hygiene
- Delete merged branches locally:
git branch -d branch-name - Clean remote tracking:
git fetch --prune - Before creating PR, rebase feature branch onto latest main
- Use
git rebase -ito squash messy commits before pushing
Safety Checklist
Before destructive operations (reset --hard, rebase, force push):
- [ ] Is this a shared branch? → Don't rewrite history
- [ ] Do I have uncommitted changes? → Stash or commit first
- [ ] Am I on the right branch? →
git branchto verify - [ ] Is remote up to date? →
git fetchfirst
Common Traps
- git user.email wrong — Verify with
git config user.emailbefore important commits - Empty directories — Git doesn't track them, add
.gitkeep - Submodules — Always clone with
--recurse-submodules - Detached HEAD — Use
git switch -to return to previous branch - Push rejected — Usually needs
git pull --rebasefirst - stash pop on conflict — Stash disappears. Use
stash applyinstead - Large files — Use Git LFS for files >50MB, never commit secrets
- Case sensitivity — Mac/Windows ignore case, Linux doesn't — causes CI failures
Recovery Commands
- Undo last commit keeping changes:
git reset --soft HEAD~1 - Discard unstaged changes:
git restore filename - Find lost commits:
git reflog(keeps ~90 days of history) - Recover deleted branch:
git checkout -b branch-name <sha-from-reflog> - Use
git add -pfor partial staging when commit mixes multiple changes
Debugging with Bisect
Find the commit that introduced a bug: ```bash git bisect start git bisect bad # current commit is broken git bisect good v1.0.0 # this version worked
Git checks out middle commit, test it, then:
git bisect good # or git bisect bad
Repeat until Git finds the culprit
git bisect reset # return to original branch ```
Quick Summary
git status -sb # short status with branch
git log --oneline -5 # last 5 commits
git shortlog -sn # contributors by commit count
git diff --stat HEAD~5 # changes summary last 5 commits
git branch -vv # branches with tracking info
git stash list # pending stashes
Related Skills
Install with clawhub install <slug> if user confirms:
- gitlab — GitLab CI/CD and merge requests
- docker — Containerization workflows
- code — Code quality and best practices
Feedback
- If useful:
clawhub star git - Stay updated:
clawhub sync