mcpField
G
glab-repo

glab-repo

github.com/vince-winkintel開発49125 回インストール1 日前に更新
リポジトリ

glab-repo について

glab-repo は、glab コマンドラインで GitLab のリポジトリやプロジェクトを管理するスキルです。作成、クローン、フォーク、メンバー管理に加え、Git 実行前の URL 検証やグループ単位の操作にも対応します。

主な機能

  1. 01リポジトリの作成、クローン、フォーク
  2. 02プロジェクト設定の表示と更新
  3. 03Git リモートとメンバーの管理
  4. 04グループ内プロジェクトの一括クローン
  5. 05マージ済みローカルブランチの削除
  6. 06Git 操作前のリポジトリ URL 検証

活用シーン

  1. 01GitLab プロジェクトの作成と初期化
  2. 02フォークと上流変更の同期
  3. 03グループ内リポジトリの一括クローン
  4. 04マージリクエスト済みブランチの整理

インストール

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

$npx skills add https://github.com/vince-winkintel/gitlab-cli-skills --skill glab-repo

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

同梱ファイルreferences/commands.mdscripts/sync-fork.sh

詳細

glab repo

GitLab リポジトリやプロジェクトを操作します。

API から返されたリポジトリ URL は、glab が Git に渡す前に検証されます。対応する URL スキームと scp 形式の SSH 構文は受け入れられますが、オプションのように見える文字列、リモートヘルパーのトランスポート、空白文字、制御文字は拒否されます。無効なリモート URL が原因でクローン、フォーク、リモート操作に失敗した場合は、検証を回避したり、その文字列を直接 Git に渡したりせず、信頼できるプロジェクト/ホストのメタデータを正確に確認してください。

クイックスタート

# Clone a repository
glab repo clone group/project

# Clone the project's wiki repository
glab repo clone --wiki group/project

# Create new repository
glab repo create my-new-project --public

# Fork a repository
glab repo fork upstream/project

# View repository details
glab repo view

# Add a Git remote from a GitLab project reference
glab repo remote add group/project --name upstream

# Prune local branches whose MRs have been merged
glab repo prune --dry-run
glab repo prune --yes

# Search for repositories
glab repo search "keyword"

よく使うワークフロー

新しいプロジェクトの開始

--private、--internal、--public をすべて省略すると、GitLab はインスタンスのデフォルトのプロジェクト公開範囲を使用します。プロジェクトの作成時には、意図する公開範囲を明示的に指定してください。

  1. リポジトリを作成:

    glab repo create my-project \
      --public \
      --description "My awesome project"
    
    # Create with README
    glab repo create my-project \
      --public \
      --readme
    

    注: glab repo create --readme は git init を使う代わりに、新しく作成したリポジトリをクローンし、初期 README を含むクリーンなローカルコピーを確保します。

    glab repo create --skipGitInit は、ローカルディレクトリの初期化を求めずにリモートプロジェクトを作成します。現在のディレクトリがすでに Git リポジトリでない場合、glab はリモートの追加も省略します。これにより、リモートの作成に成功した後で、誤解を招く fatal: not a git repository の警告が表示されるのを防ぎます。

    ネストされたグループを含むパスでは、完全な名前空間が維持されます。たとえば、glab repo create group/subgroup/my-project は my-project を最後のサブグループだけでなく、group/subgroup の下に作成します。

  2. ローカルにクローン(--readme を使わない場合):

    glab repo clone my-username/my-project
    cd my-project
    

    GitLab Wiki のみをクローンするには、1 つのプロジェクト参照とともに --wiki を渡します。グループ全体を対象とする --group クローンとは併用できません。また、プロジェクトの Wiki が無効になっている場合は、明確なエラーが表示されます。

    glab repo clone --wiki group/project
    

    gitlab.com を公式の altssh.gitlab.com エンドポイントに割り当てる SSH 設定は、別のセルフマネージドホストではなく、GitLab.com として認識されます。

    ポートを含むセルフマネージドホストの場合、glab はポートを含む完全なホスト名をキーとしてサブフォルダーの設定を検索します。リポジトリが誤った API ホストに解決される場合や、設定済みのサブフォルダーが見つからない場合は、glab config path にある設定ファイルで、正確なホストキーにポートが含まれていることを確認してください。

  3. コンテンツを使って初期化:

    echo "# My Project" > README.md
    git add README.md
    git commit -m "Initial commit"
    git push -u origin main
    
フォークのワークフロー
  1. 上流リポジトリをフォーク:

    glab repo fork upstream-group/project
    
  2. 自分のフォークをクローン:

    glab repo clone my-username/project
    cd project
    
  3. 上流リモートを追加:

    glab repo remote add upstream-group/project --name upstream
    

    glab repo remote add <namespace/project> は GitLab プロジェクト参照を解決し、適切な Git リモート URL を追加します。デフォルトのリモート名は最初のパス要素です(例では upstream-group)。--name / -n で変更できます。--protocol ssh|https / -p を使うと、git_protocol 設定を上書きできます。

    glab repo remote add alice/my-project
    glab repo remote add alice/my-project --name upstream
    glab repo remote add group/subgroup/my-project --protocol ssh
    
  4. フォークを同期:

    git fetch upstream
    git merge upstream/main
    

自動同期:

このスキルに scripts/ の下に同梱されている同期スクリプトを使うと、1 つのコマンドでフォークを更新できます(以下のパスはスキル自体のディレクトリからの相対パスです)。

scripts/sync-fork.sh main
scripts/sync-fork.sh develop upstream

これにより、自動的にフェッチ → マージ → origin へのプッシュが行われます。

リポジトリの管理

リポジトリ情報を表示:

glab repo view
glab repo view group/project  # Specific repo
glab repo view --web          # Open in browser

リポジトリ設定を更新:

glab repo update \
  --description "Updated description" \
  --default-branch develop

リポジトリをアーカイブ:

glab repo archive download main  # Downloads .tar.gz
glab repo archive download main --format zip

新しい名前空間に移動:

glab repo transfer my-project --target-namespace new-group

リポジトリを削除:

glab repo delete group/project
ローカルブランチの整理

glab repo prune は、GitLab のマージリクエストがマージ済みのローカル Git ブランチを削除します。GitLab 上のリモートブランチは削除されません。また、保護ブランチ、デフォルトブランチ、現在チェックアウト中のブランチは対象外です。

# Preview branches that would be deleted
glab repo prune --dry-run

# Delete branches after confirmation
glab repo prune

# Delete without confirmation after reviewing the dry run
glab repo prune --yes

# Exclude additional branches by exact name or glob; comma-separate or repeat
glab repo prune --exclude wip-*,demo-branch

# Faster local-Git detection; misses squash/rebase merges that are not fast-forward ancestry
glab repo prune --merged

正確性を重視する場合は、デフォルトの GitLab 連携モードを使用してください。これは各ローカルブランチのマージリクエストを照会し、単純な git branch --merged よりも、スカッシュマージやリベースマージのケースに適切に対応します。より高速な早送りのみのチェックで問題ない場合に限り、--merged を使用してください。

メンバーの管理

コラボレーターを一覧表示:

glab repo members list

メンバーを追加:

glab repo members add @username --access-level maintainer

メンバーを削除:

glab repo members remove @username

メンバーのアクセス権を更新:

glab repo members update @username --access-level developer
一括操作

グループ内のすべてのリポジトリをクローンする:

glab repo clone -g my-group

# Skip selected subgroups and their descendants across every page
glab repo clone -g my-group --exclude-subgroup domain/backend,archived --paginate

--exclude-subgroup は、数値のサブグループ ID ではなく、--group からの相対パスを指定します。フラグを繰り返すか、パスをカンマ区切りで指定してください。一致判定では大文字と小文字を区別せず、先頭と末尾のスラッシュを削除し、完全なグループパスを先頭に付けたパスも受け付け、パスの境界を考慮します(team は team-other を除外しません)。数値の --group ID は、フィルタリング前に完全なパスに解決されます。他の名前空間から共有されたプロジェクトには影響しません。サブグループはデフォルトで含まれ、除外対象は取得したプロジェクトをクローンする前にフィルタリングされます。取得したプロジェクトがすべて除外された場合、コマンドは「No projects left to clone」というメッセージを表示して失敗します。

検索してクローンする:

glab repo search "api" --per-page 10
# Then clone specific result
glab repo clone group/api-project

自分のリポジトリを一覧表示する:

glab repo list
glab repo list --member          # Only where you're a member
glab repo list --mine            # Only repos you own

トラブルシューティング

クローン時に権限エラーが発生する:

  • アクセス権があることを確認します:glab repo view group/project
  • 認証状態を確認します:glab auth status
  • プライベートリポジトリの場合、正しいアカウントでログインしていることを確認します

フォーク操作が失敗する:

  • フォークがすでに自分の名前空間に存在していないか確認します
  • フォークする権限があることを確認します(フォークが無効になっているリポジトリもあります)
  • 明示的な名前空間を指定して試します:glab repo fork --fork-path username/new-name

移管に失敗する:

  • オーナーまたはメンテナーのアクセス権があることを確認します
  • 移管先の名前空間が存在し、作成権限があることを確認します
  • プロジェクトによっては、移管が保護されている場合があります

グループのクローンに失敗する:

  • グループが存在し、アクセス権があることを確認します
  • 十分なディスク容量があることを確認します
  • 大規模なグループではタイムアウトする場合があります。その場合は、特定のリポジトリをクローンしてください

関連スキル

認証とアクセス:

  • ログインと認証の設定については、glab-auth を参照してください
  • SSH キーの管理については、glab-ssh-key を参照してください
  • デプロイ認証については、glab-deploy-key を参照してください

プロジェクト設定:

  • CLI のデフォルトと設定については、glab-config を参照してください
  • CI/CD 変数については、glab-variable を参照してください

フォークの同期:

  • スクリプト:scripts/sync-fork.sh はアップストリームとの同期を自動化します

構造化出力

glab repo contributors は、構造化出力に --output json / -F json をサポートしており、エージェントによる自動化に役立ちます。

# List contributors with JSON output
glab repo contributors --output json
glab repo contributors -F json

コマンドリファレンス

コマンドの全ドキュメントとすべてのフラグについては、references/commands.md を参照してください。

利用可能なコマンド:

  • clone - リポジトリまたはグループをクローンする
  • create - 新しいプロジェクトを作成する
  • fork - リポジトリをフォークする
  • view - プロジェクトの詳細を表示する
  • update - プロジェクトの設定を更新する
  • delete - プロジェクトを削除する
  • search - プロジェクトを検索する
  • list - リポジトリを一覧表示する
  • transfer - 新しい名前空間に移管する
  • archive - リポジトリアーカイブをダウンロードする
  • contributors - コントリビューターを一覧表示する
  • members - プロジェクトメンバーを管理する
  • mirror - リポジトリのミラーリングを設定する
  • remote - GitLab プロジェクト参照を使用して Git リモートを管理する
  • prune - GitLab のマージリクエストがマージ済みのローカルブランチを削除する
  • publish - プロジェクトリソースを公開する

コメント