git advanced workflow expert

Git Advanced Workflow Expert

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 advanced workflow expert" with this command: npx skills add krosebrook/source-of-truth-monorepo/krosebrook-source-of-truth-monorepo-git-advanced-workflow-expert

Git Advanced Workflow Expert

Advanced Git workflows and automation for modern development teams.

Trunk-Based Development

Main branch protection

git config branch.main.mergeoptions --no-ff

Short-lived feature branches

git checkout -b feature/user-auth

Work on feature (max 2 days)

git commit -m "feat: add user authentication" git push origin feature/user-auth

Create PR → Review → Merge → Delete branch

Feature flags for incomplete features

if (featureFlags.isEnabled('new-ui')) { renderNewUI(); } else { renderOldUI(); }

Conventional Commits

Format: <type>(<scope>): <subject>

feat(auth): add OAuth2 support fix(api): resolve race condition in user creation docs(readme): update installation instructions style(ui): format button components refactor(db): optimize query performance test(api): add integration tests for auth chore(deps): upgrade react to v18 perf(api): implement caching layer ci(github): add automated deployment build(webpack): optimize production bundle

Git Hooks with Husky

// package.json { "scripts": { "prepare": "husky install" }, "lint-staged": { ".{ts,tsx}": ["eslint --fix", "prettier --write"], ".{json,md}": ["prettier --write"] } }

.husky/pre-commit

#!/bin/sh . "$(dirname "$0")/_/husky.sh"

Run lint-staged

npx lint-staged

Run tests on staged files

npm test -- --findRelatedTests --passWithNoTests

Prevent commits to main

branch="$(git rev-parse --abbrev-ref HEAD)" if [ "$branch" = "main" ]; then echo "Direct commits to main are not allowed" exit 1 fi

.husky/commit-msg

#!/bin/sh . "$(dirname "$0")/_/husky.sh"

Validate conventional commit format

npx commitlint --edit $1

Monorepo Strategies

Git Sparse Checkout

Clone only specific directories

git clone --filter=blob:none --sparse https://github.com/user/monorepo cd monorepo git sparse-checkout init --cone git sparse-checkout set apps/web packages/ui

Add more paths

git sparse-checkout add apps/api

Git Worktrees

Multiple working directories from same repo

git worktree add ../monorepo-feature feature/new-ui git worktree add ../monorepo-hotfix hotfix/critical-bug git worktree list

Clean up

git worktree remove ../monorepo-feature

Advanced Git Operations

Interactive Rebase

Clean up commits before PR

git rebase -i HEAD~5

Squash fixup commits

git commit --fixup HEAD2 git rebase -i --autosquash HEAD5

Edit commit history

pick a1b2c3d feat: add feature fixup d4e5f6g fix typo reword g7h8i9j Update message drop j0k1l2m Remove this commit

Cherry-Pick Workflows

Apply specific commits

git cherry-pick abc123

Cherry-pick range

git cherry-pick abc123..def456

Cherry-pick from another branch

git cherry-pick feature-branch~3..feature-branch

Bisect for Bug Hunting

Find bug-introducing commit

git bisect start git bisect bad HEAD git bisect good v1.0.0

Mark each commit

git bisect good # or bad

Automated bisect

git bisect run npm test

Git Automation Scripts

Auto-sync Script

#!/bin/bash

auto-sync.sh

MAIN_BRANCH="main" CURRENT_BRANCH=$(git branch --show-current)

Fetch latest

git fetch origin

Check if main has updates

if [ "$(git rev-parse $MAIN_BRANCH)" != "$(git rev-parse origin/$MAIN_BRANCH)" ]; then echo "Main branch has updates. Rebasing..."

Stash changes

git stash

Update main

git checkout $MAIN_BRANCH git pull --rebase origin $MAIN_BRANCH

Rebase current branch

git checkout $CURRENT_BRANCH git rebase $MAIN_BRANCH

Restore stash

git stash pop

echo "✅ Successfully synced with main" else echo "✅ Already up to date" fi

Release Automation

#!/bin/bash

release.sh

VERSION=$1 if [ -z "$VERSION" ]; then echo "Usage: ./release.sh <version>" exit 1 fi

Ensure clean working directory

if [[ -n $(git status -s) ]]; then echo "❌ Working directory not clean" exit 1 fi

Update version

npm version $VERSION --no-git-tag-version

Build

npm run build

Commit

git add package.json package-lock.json git commit -m "chore: release v$VERSION"

Tag

git tag -a "v$VERSION" -m "Release v$VERSION"

Push

git push origin main --tags

echo "✅ Released v$VERSION"

GitHub Actions Integration

.github/workflows/ci.yml

name: CI

on: pull_request: branches: [main] push: branches: [main]

jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # Full history for better diffs

  - name: Get changed files
    id: changed-files
    uses: tj-actions/changed-files@v40
    with:
      files: |
        **/*.ts
        **/*.tsx

  - name: Run tests on changed files
    if: steps.changed-files.outputs.any_changed == 'true'
    run: |
      npm test -- ${{ steps.changed-files.outputs.all_changed_files }}

lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm ci - run: npm run lint

semantic-release: needs: [test, lint] if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: cycjimmy/semantic-release-action@v4 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Git Aliases

~/.gitconfig

[alias]

Shortcuts

co = checkout ci = commit st = status br = branch

Logging

lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit recent = for-each-ref --count=10 --sort=-committerdate refs/heads/ --format='%(refname:short)'

Workflow

undo = reset --soft HEAD~1 amend = commit --amend --no-edit sync = !git fetch origin && git rebase origin/main cleanup = !git branch --merged | grep -v '\*\|main\|develop' | xargs -n 1 git branch -d

Review

diff-staged = diff --staged contributors = shortlog --summary --numbered --email

Best Practices

✅ Use conventional commits for clarity ✅ Keep commits atomic and focused ✅ Rebase feature branches regularly ✅ Use feature flags for incomplete work ✅ Automate with Git hooks ✅ Protect main branch ✅ Require PR reviews ✅ Use semantic versioning ✅ Tag releases properly ✅ Clean up merged branches

When to Use: Git workflow setup, repository management, automation, trunk-based development, monorepo strategies.

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.

Automation

pydantic ai agent builder

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

dispatching-parallel-agents

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

ai workflow orchestrator

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

testing-skills-with-subagents

No summary provided by upstream source.

Repository SourceNeeds Review