更新日:2025年5月26日
1分で読めます
Bitbucket、Gitea、GitHub、GitLab Self-Managedなど、さまざまなソースからプロジェクトをインポートする方法についてご説明します。
「GitLab入門」シリーズへようこそ!このシリーズでは、GitLab DevSecOpsプラットフォームを初めて使う方に向けて、基本的な使い方を解説します。
GitLab DevSecOpsプラットフォームを最大限に活用するためには、プロジェクトのインポート方法を理解することがきわめて重要です。アカウントのセットアップ、ユーザーの招待、ユースケースやチーム構成に応じたユーザーの整理が完了したら、次は既存のプロジェクトをGitLabに取り込み、コラボレーションを開始します。これらのプロジェクトは、コンピューター上のローカルファイルでも、別のソースコード管理プラットフォームでホストされているものでも構いません。それでは、それぞれのインポート方法を見ていきましょう。
新しいプロジェクトを作成するたびに、一から始める必要はありません。以下の手順に従うことで、既存のレガシープロジェクトやアプリケーションを、バージョン管理の有無にかかわらずGitLabに取り込めます。
cd /project_folder
git remote rename origin old-origin
git remote add origin [[email protected]](mailto:[email protected]):gitlab-da/playground/abubakar/new-test-repo.git
(HTTPSを使用する場合)
git remote add origin https://gitlab.com/gitlab-da/playground/abubakar/new-test-repo.git
git push --set-upstream origin --all
git push --set-upstream origin --tags
これで、すべてのファイル、ブランチ、タグがGitLabにプッシュされ、コラボレーションを開始できるようになります。
Gitをまだ初期化していないプロジェクトの場合、以下の手順でGitを初期化し、既存のファイルをコミットしてGitLabにプッシュする必要があります。
git init --initial-branch=main
git remote add origin [email protected]:gitlab-da/playground/abubakar/new-test-repo.git
git add .
git commit -m "Initial commit"
git push --set-upstream origin main
GitLab.comや他のプラットフォームにあるプロジェクトを、別のGitLabインスタンス(たとえばSelf-Managedインスタンス)に移行したい場合や、他のプラットフォームからGitLab.comに移行したい場合は、GitLabのプロジェクトインポート機能を利用できます。この機能は、新しいプロジェクトを作成する際に使用できます。

プロジェクトをインポートすると、ソースに応じてプロジェクトのファイルやその他の一部のコンポーネントが移行されます。Bitbucket、GitHub、Gitea、GitLabインスタンスなど、さまざまなソースからのインポートが可能です。GitLab.comでは、これらのインポートソースはデフォルトで有効になっていますが、Self-Managed環境では管理者によって有効化する必要があります。以降のセクションでは、いくつかのソースについて詳しく見ていきます。

GitLab.comやGitLab Self-Managedインスタンスからプロジェクトをエクスポートするには、プロジェクトの設定にある「プロジェクトのエクスポート」機能を使用できます。

エクスポート手順:
インポートにかかる時間は、プロジェクトのサイズによって異なります。なお、プロジェクトの一部がエクスポートされなかったり、インポート後に若干の変更が生じたりする場合があります。これらの制限事項については、ドキュメントをご確認ください。個々のプロジェクトではなくグループ全体を移行する場合は、直接転送を使用することをおすすめします。これにより、グループ全体のコピーが作成されます。
GitLabは、Bitbucket Cloud、Bitbucket Server、FogBugz、Gitea、GitHubからのプロジェクトのインポートに対応しています。インポート手順は、対応しているすべてのサードパーティでほぼ同じですが、認証方法が異なります。ここでは、認証方法の例をいくつかご紹介します。
GitHubのプロジェクトをGitLabにインポートする場合、以下の3つの方法があります。
「GitHub OAuthを使用する」方法と「パーソナルアクセストークンを使用する」方法は似ていますが、GitLabがリポジトリへアクセスするための認証方法に違い があります。より簡単なのはOAuthを使用する方法で、「GitHubで認証」ボタンをクリックするだけで、GitHubの認証ページにリダイレクトされ、アクセスを許可することで接続が完了します。認証後、プロジェクトの一覧が表示され、インポートするプロジェクトを選択できます。

OAuthを使用しない場合は、repo
スコープとread: org
スコープを選択してGitHubのパーソナルアクセストークンを生成し、それを「インポート」ページで入力する必要があります。APIを使ってインポートする場合は、このパーソナルアクセストークンを使用することで、スクリプトやアプリケーションでGitLabのImport REST APIエンドポイントを利用できます。
次のデモ動画では、GitLabのシニアデベロッパーアドボケートを務めるFernando Diazが、OAuthを使ってGitHubからプロジェクトをインポートする方法を解説しています。
GitLabのインポートに関するドキュメントでは、前提要件、既知の問題、GitHub Enterpriseからのインポート手順、その他の重要な情報を参照していただけます。
Bitbucketからプロジェクトをインポートする手順は、GitHubの例とほとんど同じです。Bitbucket Cloud(BitbucketのSaaS版)を使用する場合はOAuth認証が可能ですが、Bitbucket Server(エンタープライズ向けのセルフホスト版)の場合は、URL、ユーザー名、パーソナルアクセストークンを入力する必要があります。「インポート」画面でBitbucket Cloudを選択すると、自動的にAtlassianの認証ページ に移動し、Bitbucketの認証が行われます。
Bitbucketのプロジェクトは、GitLab Import APIを使用してインポートすることも可能です。
Giteaからプロジェクトをインポートするには、Giteaのプラットフォーム上でパーソナルアクセストークンを作成し、それをGiteaサーバーのURLとともにGitLabのインポートページで入力する必要があります。なお、OAuth認証はサポートされていません。

お使いのGitプロバイダーがサポートされていない場合や、サポートされている方法でインポートできない場合、アクセス可能なhttps://
またはgit://
のURLを使ってリポジトリをインポートできます。リポジトリが公開されていない場合は、リポジトリURLに加えて、ユーザー名とパスワード(または多要素認証が必要な場合はアクセストークン)を入力する必要があります。
この方法は、リモートプロジェクトのコピーを維持し、同期を保つ目的にも使用できます。これをミラーリングといい、異なるプラットフォーム間でリポジトリを同期し、最新の状態を維持できます。たとえば、プライベートとパブリックのリポジトリを分けつつ、両者で同じ内容を保持できるため、内部プロジェクトをオープンソース化する際に便利です。また、異なるプラットフォームを使用する契約業者と協力していて、両者がコードベースにアクセスする必要がある場合にも活用できます。
GitLabのインスタンス間や外部ソースからのインポートおよび移行は、どのデータをどの方法でインポートするのかを明確に計画した上で実施すべき重要なプロセスです。ほとんどのサードパーティのインポート方法では、ファイル、イシュー、マージリクエストなどのプロジェクトアイテムがインポートされますが、一部の方法には既知の問題や制限があることにご注意ください。GitLabのインポートに関するドキュメントには、サポートしているすべての方法の詳細情報が記載されており、移行を計画する際に役立ちます。
もっとGitLabについて知りたい場合は、GitLabユニバーシティのコースに登録するか、GitLab Ultimateの60日間無料トライアルを今すぐお試しください。
監修:小松原 つかさ @tkomatsubara
(GitLab合同会社 ソリューションアーキテクト本部 シニアパートナーソリューションアーキテクト)