mcpField
G
git-workflow

git-workflow

github.com/bobmatnyc開発78562 回インストール15 週間前に更新
リポジトリ

git-workflow について

git-workflowは、コーディングエージェント向けのGitワークフロー技能です。コミット、ブランチ、競合解決、履歴確認から応用コマンドまでを扱います。

主な機能

  1. 01Conventional Commitsの規約
  2. 02原子的コミットとブランチ戦略
  3. 03変更の取り消し、stash、cherry-pick
  4. 04競合解決と履歴確認
  5. 05インタラクティブrebaseとbisect

活用シーン

  1. 01機能や修正用のブランチ作成
  2. 02コミットメッセージの統一と変更の分割
  3. 03別ブランチから特定コミットを適用
  4. 04不具合を導入したコミットの特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bobmatnyc/claude-mpm-skills --skill git-workflow

インストール後、Claude Code で/git-workflowを入力して読み込まれたか確認します。

同梱ファイルmetadata.json

詳細

Git ワークフロー

効果的なバージョン管理に欠かせない Git のパターンです。エージェントごとに重複する Git のガイダンスを約 120~150 行削減します。

コミットのベストプラクティス

Conventional Commits の形式
<type>(<scope>): <subject>

<body>

<footer>

種類:

  • feat:新機能
  • fix:バグ修正
  • docs:ドキュメントのみ
  • refactor:バグ修正や機能追加を伴わないコード変更
  • perf:パフォーマンスの改善
  • test:テストの追加または更新
  • chore:ビルドプロセス、依存関係、ツール

例:

feat(auth): add OAuth2 authentication

Implements OAuth2 flow using Google provider.
Includes token refresh and validation.

Closes #123

fix(api): handle null response in user endpoint

Previously crashed when user not found.
Now returns 404 with error message.

perf(db): optimize user query with index

Reduces query time from 500ms to 50ms.
アトミックコミット
# Good: Each commit does one thing
git commit -m "feat: add user authentication"
git commit -m "test: add auth tests"
git commit -m "docs: update API docs for auth"

# Bad: Multiple unrelated changes
git commit -m "add auth, fix bugs, update docs"

ブランチ戦略

Git Flow(機能ブランチ)
# Create feature branch from main
git checkout main
git pull origin main
git checkout -b feature/user-authentication

# Work on feature with regular commits
git add src/auth.py
git commit -m "feat(auth): implement login endpoint"

# Keep branch updated with main
git checkout main
git pull origin main
git checkout feature/user-authentication
git rebase main  # Or: git merge main

# Push and create PR
git push -u origin feature/user-authentication
トランクベース開発
# Work directly on main with short-lived branches
git checkout main
git pull origin main
git checkout -b fix/null-pointer
# Make small change
git commit -m "fix: handle null in user query"
git push origin fix/null-pointer
# Merge immediately via PR

一般的なワークフロー

最新の変更でブランチを更新する
# Option 1: Rebase (cleaner history)
git checkout feature-branch
git fetch origin
git rebase origin/main

# Resolve conflicts if any
git add resolved_file.py
git rebase --continue

# Option 2: Merge (preserves history)
git checkout feature-branch
git merge origin/main
変更を元に戻す
# Undo last commit (keep changes)
git reset --soft HEAD~1

# Undo last commit (discard changes)
git reset --hard HEAD~1

# Undo changes to specific file
git checkout -- file.py

# Revert a commit (creates new commit)
git revert abc123

# Amend last commit
git add forgotten_file.py
git commit --amend --no-edit
作業を一時退避する
# Save current work temporarily
git stash

# List stashes
git stash list

# Apply most recent stash
git stash pop

# Apply specific stash
git stash apply stash@{0}

# Create named stash
git stash save "WIP: authentication feature"
コミットをチェリーピックする
# Apply specific commit from another branch
git cherry-pick abc123

# Cherry-pick multiple commits
git cherry-pick abc123 def456

# Cherry-pick without committing
git cherry-pick -n abc123

コンフリクトの解決

# When conflicts occur during merge/rebase
# 1. Check conflicted files
git status

# 2. Edit files to resolve conflicts
# Look for conflict markers:
<<<<<<< HEAD
Your changes
=======
Their changes
>>>>>>> branch-name

# 3. Mark as resolved
git add resolved_file.py

# 4. Continue operation
git rebase --continue  # or git merge --continue

履歴の表示

# Compact log
git log --oneline -10

# Graphical log
git log --graph --oneline --all

# Commits by author
git log --author="John Doe"

# Commits affecting specific file
git log -- path/to/file.py

# See changes in commit
git show abc123

# Compare branches
git diff main..feature-branch

ブランチ管理

# List branches
git branch -a  # All branches (local + remote)

# Delete local branch
git branch -d feature-branch  # Safe delete (merged only)
git branch -D feature-branch  # Force delete

# Delete remote branch
git push origin --delete feature-branch

# Rename branch
git branch -m old-name new-name

# Track remote branch
git checkout --track origin/feature-branch

タグ

# Create lightweight tag
git tag v1.0.0

# Create annotated tag (recommended)
git tag -a v1.0.0 -m "Release version 1.0.0"

# Push tags to remote
git push origin v1.0.0
git push origin --tags  # Push all tags

# Checkout tag
git checkout v1.0.0

# Delete tag
git tag -d v1.0.0
git push origin --delete v1.0.0

高度な操作

インタラクティブなリベース
# Edit last 3 commits
git rebase -i HEAD~3

# Options in editor:
# pick = use commit
# reword = change commit message
# edit = stop to amend commit
# squash = combine with previous commit
# fixup = like squash but discard message
# drop = remove commit
Bisect(バグの混入箇所を特定)
# Start bisect
git bisect start
git bisect bad  # Current version has bug
git bisect good v1.0.0  # This version was good

# Git checks out middle commit
# Test if bug exists
git bisect bad  # if bug exists
git bisect good  # if bug doesn't exist

# Git narrows down until finding first bad commit
git bisect reset  # Return to original branch
Blame(行を変更した人を特定)
# See who last modified each line
git blame file.py

# Ignore whitespace changes
git blame -w file.py

# Show specific line range
git blame -L 10,20 file.py

Git フック

# Pre-commit hook (runs before commit)
# .git/hooks/pre-commit
#!/bin/bash
npm run lint
npm test

# Pre-push hook (runs before push)
# .git/hooks/pre-push
#!/bin/bash
npm run test:integration

ベストプラクティス

✅ 推奨事項
  • アトミックな変更を頻繁にコミットする
  • 明確で分かりやすいコミットメッセージを書く
  • コンフリクトを避けるため、プッシュ前にプルする
  • コミット前に変更を確認する(git diff --staged)
  • 機能や修正にはブランチを使う
  • コミットは小さく、焦点を絞る
❌ 避けるべきこと
  • 機密データをコミットする(.gitignoreを使用する)
  • 生成ファイルをコミットする(ビルド成果物、node_modules)
  • 共有ブランチに強制プッシュする(git push --force)
  • 作業途中の内容を main にコミットする
  • 無関係な変更を複数まとめて 1 つのコミットに含める
  • 公開済みの履歴を書き換える

.gitignore のパターン

# Dependencies
node_modules/
venv/
__pycache__/

# Build outputs
dist/
build/
*.pyc
*.o
*.exe

# IDE
.vscode/
.idea/
*.swp

# Secrets
.env
*.key
*.pem
secrets.yml

# OS
.DS_Store
Thumbs.db

# Logs
*.log
logs/

クイックコマンドリファレンス

# Status and diff
git status
git diff
git diff --staged

# Commit
git add .
git commit -m "message"
git push

# Branch
git branch
git checkout -b branch-name
git merge branch-name

# Update
git pull
git fetch

# Undo
git reset HEAD~1
git checkout -- file
git revert commit-hash

# History
git log
git log --oneline
git show commit-hash

覚えておくこと

  • こまめにコミットする - 小さなコミットはレビューや取り消しが簡単です
  • 説明的なメッセージを書く - 未来の自分が今の自分に感謝するでしょう
  • プッシュ前にプルする - チームと同期した状態を保ちます
  • ブランチを使う - main を安定させます
  • コミット前にレビューする - コミットする内容を確認します

コメント