glab-repo について
glab-repo は、glab コマンドラインで GitLab のリポジトリやプロジェクトを管理するスキルです。作成、クローン、フォーク、メンバー管理に加え、Git 実行前の URL 検証やグループ単位の操作にも対応します。
主な機能
- 01リポジトリの作成、クローン、フォーク
- 02プロジェクト設定の表示と更新
- 03Git リモートとメンバーの管理
- 04グループ内プロジェクトの一括クローン
- 05マージ済みローカルブランチの削除
- 06Git 操作前のリポジトリ URL 検証
活用シーン
- 01GitLab プロジェクトの作成と初期化
- 02フォークと上流変更の同期
- 03グループ内リポジトリの一括クローン
- 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 はインスタンスのデフォルトのプロジェクト公開範囲を使用します。プロジェクトの作成時には、意図する公開範囲を明示的に指定してください。
-
リポジトリを作成:
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の下に作成します。 -
ローカルにクローン(--readme を使わない場合):
glab repo clone my-username/my-project cd my-projectGitLab Wiki のみをクローンするには、1 つのプロジェクト参照とともに
--wikiを渡します。グループ全体を対象とする--groupクローンとは併用できません。また、プロジェクトの Wiki が無効になっている場合は、明確なエラーが表示されます。glab repo clone --wiki group/projectgitlab.comを公式のaltssh.gitlab.comエンドポイントに割り当てる SSH 設定は、別のセルフマネージドホストではなく、GitLab.com として認識されます。ポートを含むセルフマネージドホストの場合、glab はポートを含む完全なホスト名をキーとしてサブフォルダーの設定を検索します。リポジトリが誤った API ホストに解決される場合や、設定済みのサブフォルダーが見つからない場合は、
glab config pathにある設定ファイルで、正確なホストキーにポートが含まれていることを確認してください。 -
コンテンツを使って初期化:
echo "# My Project" > README.md git add README.md git commit -m "Initial commit" git push -u origin main
フォークのワークフロー
-
上流リポジトリをフォーク:
glab repo fork upstream-group/project -
自分のフォークをクローン:
glab repo clone my-username/project cd project -
上流リモートを追加:
glab repo remote add upstream-group/project --name upstreamglab 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 -
フォークを同期:
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- プロジェクトリソースを公開する