jpskill.com
💼 ビジネス コミュニティ

git-analysis

Gitリポジトリの変更点やブランチ間の差分、コミット履歴などを分析し、ブランチ分析や変更比較、コミット履歴の調査、PR/コミット作業の準備などを効率的に行う支援をするSkill。

📜 元の英語説明(参考)

Analyze git repository changes, branch differences, and commit history. Use when analyzing branches, comparing changes, examining commit history, or preparing for PR/commit operations.

🇯🇵 日本人クリエイター向け解説

一言でいうと

Gitリポジトリの変更点やブランチ間の差分、コミット履歴などを分析し、ブランチ分析や変更比較、コミット履歴の調査、PR/コミット作業の準備などを効率的に行う支援をするSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o git-analysis.zip https://jpskill.com/download/16673.zip && unzip -o git-analysis.zip && rm git-analysis.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/16673.zip -OutFile "$d\git-analysis.zip"; Expand-Archive "$d\git-analysis.zip" -DestinationPath $d -Force; ri "$d\git-analysis.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して git-analysis.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → git-analysis フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
3

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Git 分析

この Skill は、ブランチの変更、コミット履歴、コードの差分を理解するための包括的な git リポジトリ分析機能を提供します。

機能

  • ブランチの差分とマージベースの分析
  • 構造化されたコミット履歴の抽出
  • 変更されたファイルとその統計情報の特定
  • デフォルトブランチとリモート構成の決定
  • PR 作成、コードレビュー、コミット操作のサポート

使用場面

この Skill は、以下が必要な場合に使用します。

  • ブランチで何が変更されたかの分析
  • PR 作成のための情報の準備
  • コミット履歴のレビュー
  • ブランチの比較
  • コミットまたはレビューのためのコード変更の理解

コア分析手順

1. デフォルトブランチの特定

リポジトリのデフォルトブランチ(通常は main または master)を取得します。

git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'

これは、比較の基準となるブランチを特定します。

2. マージベースの検索

現在のブランチがデフォルトブランチから分岐した場所を特定します。

# マージベースの取得
git merge-base origin/<default-branch> HEAD

マージベースは、ブランチが分岐したコミットであり、ベースブランチの現在の状態ではありません。

3. 変更の分析

包括的な変更情報を取得します。

# マージベースからのコミットのリスト
git log --oneline <merge-base>..HEAD

# 詳細なコミット情報の取得
git log --format="%H|%s|%an|%ae|%ad" --date=iso <merge-base>..HEAD

# ファイル統計情報の取得
git diff --stat <merge-base>..HEAD

# 完全な差分の取得
git diff <merge-base>..HEAD

4. 現在の状態の確認

ステージされていない変更とステージされた変更を理解します。

# 未追跡ファイルの確認
git status

# ステージされた変更の確認
git diff --cached

# ステージされていない変更の確認
git diff

ヘルパースクリプト

この Skill には、一般的な操作のためのヘルパースクリプトが含まれています。

get_branch_diff.sh

以下のものを含むブランチの差分を抽出します。

  • デフォルトブランチ名
  • マージベースコミット
  • 統計情報付きのコミットリスト
  • 変更されたファイルの概要

使用法:

bash scripts/get_branch_diff.sh

出力形式:

DEFAULT_BRANCH: main
MERGE_BASE: abc123def456
COMMITS: 5
CHANGED_FILES: 12

get_commit_history.sh

構造化された形式で詳細なコミット履歴を抽出します。

使用法:

bash scripts/get_commit_history.sh <merge-base>

出力形式(1行に1コミット):

hash|subject|author_name|author_email|date

ベストプラクティス

  1. 常にマージベースを使用する: 現在のベースブランチの状態からではなく、マージベースから比較します。
  2. コマンドを並列実行する: 複数の情報を収集する場合、独立した git コマンドを並列実行します。
  3. 出力を構造化する: より簡単に利用できるように、git の出力を構造化されたデータに解析します。
  4. エラーを適切に処理する: コマンドが成功したかどうかを確認してから続行します。

一般的なパターン

パターン 1: 完全なブランチ分析

# すべての情報を並列で取得
git status &
git diff --cached &
git diff &
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')
MERGE_BASE=$(git merge-base origin/$DEFAULT_BRANCH HEAD)
git log --oneline $MERGE_BASE..HEAD
git diff --stat $MERGE_BASE..HEAD
wait

パターン 2: コミット履歴の抽出

# 構造化されたコミットデータの取得
MERGE_BASE=$(git merge-base origin/$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@') HEAD)
git log --format="%H|%s|%an|%ae|%ad" --date=iso $MERGE_BASE..HEAD

パターン 3: 変更の概要

# 大まかな変更の概要の取得
MERGE_BASE=$(git merge-base origin/$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@') HEAD)
echo "Commits: $(git log --oneline $MERGE_BASE..HEAD | wc -l)"
echo "Files changed: $(git diff --stat $MERGE_BASE..HEAD | tail -1)"

他の Skill との連携

この Skill は以下と連携すると効果的です。

  • github-pr-best-practices: git 分析の結果を使用して PR コンテンツを生成します。
  • コミットメッセージの生成: 変更を分析して意味のあるコミットメッセージを作成します。
  • コードレビュー: レビューのために何が変更されたかを理解します。

エラー処理

一般的な git エラーを処理します。

# git リポジトリ内にいるかどうかの確認
if ! git rev-parse --git-dir > /dev/null 2>&1; then
    echo "Error: Not in a git repository"
    exit 1
fi

# リモートが存在するかどうかの確認
if ! git ls-remote origin > /dev/null 2>&1; then
    echo "Error: Remote 'origin' not found"
    exit 1
fi

# ブランチにコミットがあるかどうかの確認
if [ -z "$(git log --oneline $MERGE_BASE..HEAD)" ]; then
    echo "Warning: No commits found in branch"
fi

出力形式の推奨事項

git 分析の結果を提示する場合:

  1. 最初に概要: 大まかな統計から始めます。
  2. 構造化されたデータ: 解析しやすいように一貫した形式を使用します。
  3. コンテキスト情報: ブランチ名と日付を含めます。
  4. 実行可能な洞察: タスクにとって重要なものを強調表示します。

出力構造の例:

Branch Analysis Summary
-----------------------
Base branch: main
Current branch: feature/new-feature
Diverged at: abc123d (2025-01-15)

Changes:
- 5 commits
- 12 files changed
- 234 insertions, 89 deletions

Recent commits:
1. feat(api): add new endpoint (2025-01-16)
2. test(api): add endpoint tests (2025-01-16)
3. docs(api): update API documentation (2025-01-17)
...

関連する Git コマンドのリファレンス

詳細な git コマンドのドキュメントと高度な使用パターンについては、REFERENCE.md を参照してください。

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Git Analysis

This Skill provides comprehensive git repository analysis capabilities for understanding branch changes, commit history, and code differences.

Capabilities

  • Analyze branch differences and merge bases
  • Extract structured commit history
  • Identify changed files and their statistics
  • Determine default branches and remote configuration
  • Support PR creation, code review, and commit operations

When to Use

Use this Skill when you need to:

  • Analyze what changed in a branch
  • Prepare information for PR creation
  • Review commit history
  • Compare branches
  • Understand code changes for commits or reviews

Core Analysis Steps

1. Identify Default Branch

Get the repository's default branch (usually main or master):

git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'

This identifies the base branch for comparison.

2. Find Merge Base

Determine where the current branch diverged from the default branch:

# Get merge base
git merge-base origin/<default-branch> HEAD

The merge base is the commit where the branch diverged, not the current state of the base branch.

3. Analyze Changes

Get comprehensive change information:

# List commits from merge base
git log --oneline <merge-base>..HEAD

# Get detailed commit information
git log --format="%H|%s|%an|%ae|%ad" --date=iso <merge-base>..HEAD

# Get file statistics
git diff --stat <merge-base>..HEAD

# Get full diff
git diff <merge-base>..HEAD

4. Check Current State

Understand unstaged and staged changes:

# Check untracked files
git status

# Check staged changes
git diff --cached

# Check unstaged changes
git diff

Helper Scripts

This Skill includes helper scripts for common operations:

get_branch_diff.sh

Extracts branch differences including:

  • Default branch name
  • Merge base commit
  • Commit list with statistics
  • Changed files summary

Usage:

bash scripts/get_branch_diff.sh

Output format:

DEFAULT_BRANCH: main
MERGE_BASE: abc123def456
COMMITS: 5
CHANGED_FILES: 12

get_commit_history.sh

Extracts detailed commit history in structured format:

Usage:

bash scripts/get_commit_history.sh <merge-base>

Output format (one commit per line):

hash|subject|author_name|author_email|date

Best Practices

  1. Always use merge-base: Compare from merge base, not from current base branch state
  2. Run commands in parallel: When gathering multiple pieces of information, run independent git commands in parallel
  3. Structure the output: Parse git output into structured data for easier consumption
  4. Handle errors gracefully: Check if commands succeed before proceeding

Common Patterns

Pattern 1: Full Branch Analysis

# Get all information in parallel
git status &
git diff --cached &
git diff &
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')
MERGE_BASE=$(git merge-base origin/$DEFAULT_BRANCH HEAD)
git log --oneline $MERGE_BASE..HEAD
git diff --stat $MERGE_BASE..HEAD
wait

Pattern 2: Commit History Extraction

# Get structured commit data
MERGE_BASE=$(git merge-base origin/$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@') HEAD)
git log --format="%H|%s|%an|%ae|%ad" --date=iso $MERGE_BASE..HEAD

Pattern 3: Change Summary

# Get high-level change summary
MERGE_BASE=$(git merge-base origin/$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@') HEAD)
echo "Commits: $(git log --oneline $MERGE_BASE..HEAD | wc -l)"
echo "Files changed: $(git diff --stat $MERGE_BASE..HEAD | tail -1)"

Integration with Other Skills

This Skill works well with:

  • github-pr-best-practices: Use git analysis results to generate PR content
  • Commit message generation: Analyze changes to create meaningful commit messages
  • Code review: Understand what changed for review purposes

Error Handling

Handle common git errors:

# Check if in git repository
if ! git rev-parse --git-dir > /dev/null 2>&1; then
    echo "Error: Not in a git repository"
    exit 1
fi

# Check if remote exists
if ! git ls-remote origin > /dev/null 2>&1; then
    echo "Error: Remote 'origin' not found"
    exit 1
fi

# Check if branch has commits
if [ -z "$(git log --oneline $MERGE_BASE..HEAD)" ]; then
    echo "Warning: No commits found in branch"
fi

Output Format Recommendations

When presenting git analysis results:

  1. Summary first: Start with high-level statistics
  2. Structured data: Use consistent formatting for easy parsing
  3. Contextual information: Include branch names and dates
  4. Actionable insights: Highlight what's important for the task

Example output structure:

Branch Analysis Summary
-----------------------
Base branch: main
Current branch: feature/new-feature
Diverged at: abc123d (2025-01-15)

Changes:
- 5 commits
- 12 files changed
- 234 insertions, 89 deletions

Recent commits:
1. feat(api): add new endpoint (2025-01-16)
2. test(api): add endpoint tests (2025-01-16)
3. docs(api): update API documentation (2025-01-17)
...

Related Git Commands Reference

See REFERENCE.md for detailed git command documentation and advanced usage patterns.

同梱ファイル

※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。