git

Git and GitHub Workflow Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "git" with this command: npx skills add lanej/dotfiles/lanej-dotfiles-git

Git and GitHub Workflow Skill

You are a Git and GitHub workflow specialist. This skill provides comprehensive guidance for version control, collaboration, and GitHub integration using git and the gh CLI.

Core Principles

Commit Messages

CRITICAL: ALL commits must use the git-commit-message-writer agent. This agent should auto-load when commit-related operations are detected.

Agent Auto-Loading: The git-commit-message-writer agent loads automatically when:

  • User requests to "commit", "create a commit", or "commit changes"

  • The system needs to generate a commit message

  • Git commit operations are being performed

Quick commands available:

  • /git:commit [context]

  • Create a commit using the git-commit-message-writer agent

  • /git:worktree <branch>

  • Create a git worktree with automatic naming

Commit message format (enforced by agent):

  • Commitizen conventional format: <type>(<scope>): <subject>

  • Professional, human-written style

  • Subject line: Maximum 50 characters

  • NO AI attribution: Never include "Generated with Claude Code" or "Co-Authored-By: Claude"

  • Follow project conventions

  • Clear, descriptive, focused on the "why" not just the "what"

GitHub Access

Use gh CLI for all GitHub operations:

  • Issues

  • Pull requests

  • Releases

  • Repository management

  • API access

Git Fundamentals

Repository Setup

Initialize new repository

git init

Clone existing repository

git clone <url> git clone <url> <directory>

Clone with specific branch

git clone -b <branch> <url>

Clone with depth (shallow clone)

git clone --depth 1 <url>

Basic Workflow

Check status

git status

View changes

git diff git diff --staged git diff <file>

Stage changes

git add <file> git add . git add -p # Interactive staging

Commit changes

git commit -m "message"

NOTE: Use commit message writer agent instead

Push changes

git push git push origin <branch> git push -u origin <branch> # Set upstream

Pull changes

git pull git pull --rebase # Rebase instead of merge

Branch Management

List branches

git branch git branch -a # Include remote branches git branch -r # Remote branches only

Create branch

git branch <name> git checkout -b <name> # Create and switch git switch -c <name> # Modern alternative

Switch branches

git checkout <branch> git switch <branch> # Modern alternative

Delete branch

git branch -d <branch> # Safe delete git branch -D <branch> # Force delete

Delete remote branch

git push origin --delete <branch>

Rename branch

git branch -m <old-name> <new-name> git branch -m <new-name> # Rename current branch

Viewing History

View commit log

git log git log --oneline git log --graph --oneline --all git log -p # Show patches git log --follow <file> # Follow file history

View specific commits

git show <commit> git show <commit>:<file>

Search commits

git log --grep="pattern" git log --author="name" git log --since="2 weeks ago"

Undoing Changes

Discard working directory changes

git checkout -- <file> git restore <file> # Modern alternative

Unstage changes

git reset HEAD <file> git restore --staged <file> # Modern alternative

Undo last commit (keep changes)

git reset --soft HEAD~1

Undo last commit (discard changes)

git reset --hard HEAD~1

Amend last commit

git commit --amend

NOTE: Only use --amend when:

1. User explicitly requested amend OR

2. Adding edits from pre-commit hook

Revert commit (creates new commit)

git revert <commit>

Stashing

Stash changes

git stash git stash save "description"

List stashes

git stash list

Apply stash

git stash apply git stash apply stash@{n}

Apply and remove stash

git stash pop

Drop stash

git stash drop stash@{n}

Clear all stashes

git stash clear

Remote Management

List remotes

git remote -v

Add remote

git remote add <name> <url>

Change remote URL

git remote set-url <name> <url>

Remove remote

git remote remove <name>

Fetch from remote

git fetch git fetch <remote> git fetch --all

Prune deleted remote branches

git remote prune origin git fetch --prune

Advanced Git Operations

Rebasing

Rebase current branch

git rebase <base-branch> git rebase main

Interactive rebase

git rebase -i HEAD~3 # Last 3 commits git rebase -i <commit>

Continue/abort rebase

git rebase --continue git rebase --abort

Rebase with autosquash

git commit --fixup <commit> git rebase -i --autosquash <base>

IMPORTANT: Never use git rebase -i as it requires interactive input which is not supported.

Merging

Merge branch into current branch

git merge <branch>

Merge without fast-forward

git merge --no-ff <branch>

Merge with squash

git merge --squash <branch>

Abort merge

git merge --abort

Cherry-picking

Cherry-pick commit

git cherry-pick <commit>

Cherry-pick multiple commits

git cherry-pick <commit1> <commit2>

Cherry-pick range

git cherry-pick <start>..<end>

Tags

List tags

git tag

Create tag

git tag <name> git tag -a <name> -m "message" # Annotated tag

Push tags

git push origin <tag> git push origin --tags # Push all tags

Delete tag

git tag -d <name> git push origin --delete <name>

GitHub CLI (gh)

Authentication

Login to GitHub

gh auth login

Check auth status

gh auth status

Logout

gh auth logout

Pull Requests

Create PR

gh pr create gh pr create --title "Title" --body "Description" gh pr create --draft gh pr create --base develop --head feature-branch

Using heredoc for body (recommended)

gh pr create --title "Feature: Add new thing" --body "$(cat <<'EOF'

Summary

  • Added new feature
  • Fixed related bug

Test plan

  • Run unit tests
  • Test manually

EOF )"

List PRs

gh pr list gh pr list --state open gh pr list --state closed gh pr list --author @me

View PR

gh pr view gh pr view 123 gh pr view --web # Open in browser

Check PR status

gh pr checks gh pr checks 123

Review PR

gh pr review gh pr review 123 --approve gh pr review 123 --request-changes --body "Please fix X" gh pr review 123 --comment --body "Looks good!"

Checkout PR

gh pr checkout 123

Merge PR

gh pr merge gh pr merge 123 gh pr merge 123 --squash gh pr merge 123 --merge gh pr merge 123 --rebase

Close/reopen PR

gh pr close 123 gh pr reopen 123

Comment on PR

gh pr comment 123 --body "Comment text"

Edit PR

gh pr edit 123 --title "New title" gh pr edit 123 --body "New description" gh pr edit 123 --add-label bug

Issues

Create issue

gh issue create gh issue create --title "Title" --body "Description" gh issue create --label bug --label priority

List issues

gh issue list gh issue list --state open gh issue list --assignee @me gh issue list --label bug

View issue

gh issue view 123 gh issue view 123 --web

Edit issue

gh issue edit 123 --title "New title" gh issue edit 123 --add-label bug gh issue edit 123 --add-assignee @me

Close/reopen issue

gh issue close 123 gh issue reopen 123

Comment on issue

gh issue comment 123 --body "Comment text"

Repository Management

Create repository

gh repo create gh repo create my-repo --public gh repo create my-repo --private gh repo create my-repo --clone

Clone repository

gh repo clone owner/repo gh repo clone owner/repo directory

Fork repository

gh repo fork gh repo fork owner/repo gh repo fork --clone

View repository

gh repo view gh repo view owner/repo gh repo view --web

List repositories

gh repo list gh repo list owner

Archive repository

gh repo archive owner/repo

Workflow Management

List workflows

gh workflow list

View workflow

gh workflow view gh workflow view <workflow-id>

Run workflow

gh workflow run <workflow> gh workflow run <workflow> --ref branch-name

List workflow runs

gh run list gh run list --workflow=<workflow>

View run details

gh run view gh run view <run-id>

Watch run

gh run watch <run-id>

Re-run workflow

gh run rerun <run-id>

GitHub API Access

Make API request

gh api <endpoint>

Get repository info

gh api repos/owner/repo

Get PR comments

gh api repos/owner/repo/pulls/123/comments

POST request

gh api repos/owner/repo/issues --field title="Title" --field body="Body"

With jq for JSON processing

gh api repos/owner/repo | jq '.stargazers_count'

Complete Workflows

Workflow 1: Feature Development

1. Update main branch

git checkout main git pull

2. Create feature branch

git checkout -b feature/new-thing

3. Make changes

... edit files ...

4. Stage and commit

git add .

Use commit message writer agent for commit

5. Push to remote

git push -u origin feature/new-thing

6. Create PR

gh pr create --title "Add new feature" --body "Description"

7. Address review feedback

... make changes ...

git add .

Use commit message writer agent

git push

8. Merge PR (when approved)

gh pr merge --squash

Workflow 2: Fix Bug in Main

1. Create hotfix branch

git checkout main git pull git checkout -b hotfix/critical-bug

2. Fix the bug

... edit files ...

3. Commit and push

git add .

Use commit message writer agent

git push -u origin hotfix/critical-bug

4. Create urgent PR

gh pr create --title "Fix: Critical bug" --body "Fixes #123"

5. Fast-track merge

gh pr merge --merge # Keep commit history for hotfix

Workflow 3: Update Branch with Main

1. Fetch latest changes

git fetch origin

2. Rebase on main (preferred)

git rebase origin/main

Or merge main (alternative)

git merge origin/main

3. Resolve conflicts if any

... fix conflicts ...

git add . git rebase --continue # If rebasing

Or: git commit if merging

4. Push (force push if rebased)

git push --force-with-lease

Workflow 4: Review and Test PR

1. Checkout PR

gh pr checkout 123

2. Run tests

... test commands ...

3. Leave review

gh pr review --approve --body "LGTM! Tests pass."

Or request changes

gh pr review --request-changes --body "Please fix X"

4. Return to your branch

git checkout feature/my-work

Workflow 5: Clean Up After Merge

1. Switch to main

git checkout main

2. Pull latest

git pull

3. Delete local branch

git branch -d feature/old-feature

4. Delete remote branch (if not auto-deleted)

git push origin --delete feature/old-feature

5. Prune deleted remote branches

git fetch --prune

Workflow 6: Release Management

1. Create release tag

git tag -a v1.0.0 -m "Release v1.0.0" git push origin v1.0.0

2. Create GitHub release

gh release create v1.0.0 --title "v1.0.0" --notes "Release notes"

With release assets

gh release create v1.0.0 --title "v1.0.0" dist/*.tar.gz

3. List releases

gh release list

4. View release

gh release view v1.0.0

Best Practices

Branch Naming

Use descriptive, categorized names:

  • feature/user-authentication

  • fix/login-bug

  • hotfix/critical-security-issue

  • refactor/cleanup-api

  • docs/update-readme

  • test/add-integration-tests

Commit Guidelines

  • Use commit message writer agent for all commits

  • Make atomic commits: One logical change per commit

  • Write clear messages: Explain why, not just what

  • Reference issues: Include issue numbers when relevant

  • Keep commits clean: Avoid "WIP" or "fix typo" in main history

Pull Request Practices

  • Keep PRs focused: One feature/fix per PR

  • Write good descriptions: Explain what, why, and how to test

  • Update regularly: Keep branch up to date with base

  • Respond promptly: Address review comments quickly

  • Use draft PRs: For work-in-progress feedback

Git Configuration

Set user info

git config --global user.name "Your Name" git config --global user.email "you@example.com"

Set default branch name

git config --global init.defaultBranch main

Set pull strategy

git config --global pull.rebase true

Enable helpful colors

git config --global color.ui auto

Set default editor

git config --global core.editor vim

Common Patterns

Pattern 1: Quick Fix on Current Branch

git add <fixed-files>

Use commit message writer agent

git push

Pattern 2: Sync Fork with Upstream

Add upstream remote (once)

git remote add upstream <original-repo-url>

Fetch and merge upstream changes

git fetch upstream git checkout main git merge upstream/main git push origin main

Pattern 3: Squash Commits Before Merge

Interactive rebase to squash (locally)

git rebase -i HEAD~3

Or use PR squash merge (preferred)

gh pr merge --squash

Pattern 4: Find Who Changed a Line

Blame file

git blame <file> git blame -L 10,20 <file> # Specific lines

With gh

gh api repos/owner/repo/commits?path=<file> | jq '.[0]'

Pattern 5: Bisect to Find Bug

Start bisect

git bisect start git bisect bad # Current commit is bad git bisect good <commit> # Known good commit

Test each commit git presents

... run tests ...

git bisect good # or bad

When found

git bisect reset

Troubleshooting

Issue: Merge Conflicts

1. See conflicted files

git status

2. Resolve conflicts in each file

... edit files ...

3. Mark as resolved

git add <resolved-files>

4. Continue operation

git rebase --continue # If rebasing git commit # If merging

Issue: Accidentally Committed to Wrong Branch

1. Create new branch from current state

git branch correct-branch

2. Reset current branch

git reset --hard HEAD~1

3. Switch to correct branch

git checkout correct-branch

Issue: Pushed Sensitive Data

1. Remove from history

git filter-branch --tree-filter 'rm -f <file>' HEAD

Or use BFG Repo-Cleaner (better)

bfg --delete-files <file>

2. Force push (coordinate with team!)

git push --force

3. Rotate any exposed secrets immediately

Issue: Need to Change Last Commit

If not pushed yet

git commit --amend

If already pushed (requires force push)

git commit --amend git push --force-with-lease

WARNING: Only amend when:

  • User explicitly requested amend OR

  • Adding edits from pre-commit hook

Always check authorship before amending:

git log -1 --format='%an %ae'

Issue: PR Has Conflicts

Option 1: Rebase on base branch

git fetch origin git rebase origin/main git push --force-with-lease

Option 2: Merge base branch

git fetch origin git merge origin/main git push

Option 3: Use gh CLI

gh pr update-branch 123

Git Safety Rules

  • Never force push to main/master: Warn user if requested

  • Never skip hooks: Don't use --no-verify unless explicitly requested

  • Never run destructive commands: Without user confirmation

  • Always check before amending: Verify authorship and push status

  • Use --force-with-lease: Instead of --force when needed

Integration with Commit Message Writer

After validation and before committing:

After all changes are ready

git add . git status # Review what will be committed git diff --staged # Review actual changes

Then request commit using commit message writer agent

Agent will:

1. Analyze changes

2. Draft professional commit message

3. Create commit with proper format

4. NO AI attribution (per CLAUDE.md)

Quick Reference

Status and info

git status git log --oneline git diff

Branches

git checkout -b <branch> git push -u origin <branch> git branch -d <branch>

Commits

git add .

(use commit message writer)

git push

Pull requests

gh pr create gh pr list gh pr checkout 123 gh pr merge --squash

Issues

gh issue create gh issue list gh issue view 123

Sync

git pull --rebase git fetch --prune

Cleanup

git branch -d <branch> git push origin --delete <branch>

Summary

Primary directives:

  • Always use commit message writer agent for commits

  • Use gh CLI for GitHub operations

  • Follow branch naming conventions

  • Keep commits atomic and clear

  • Never include AI attribution in commit messages

  • Be careful with destructive operations

Most common commands:

  • git status

  • Check state

  • git checkout -b <branch>

  • New branch

  • gh pr create

  • Create PR

  • git pull --rebase

  • Stay updated

  • gh pr merge --squash

  • Merge PR

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

claude-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python

No summary provided by upstream source.

Repository SourceNeeds Review
General

git

No summary provided by upstream source.

Repository SourceNeeds Review