更新日:2025年5月26日
14分で読めます
Bitbucket、Gitea、GitHub、GitLab Self-Managedなど、さまざまなソースからプロジェクトをインポートする方法についてご説明します。
「GitLab入門」シリーズへようこそ!このシリーズでは、GitLab DevSecOpsプラットフォームを初めて使う方に向けて、基本的な使い方を解説します。
GitLab DevSecOpsプラットフォームを最大限に活用するためには、プロジェクトのインポート方法を理解することがきわめて重要です。アカウントのセットアップ、ユーザーの招待、ユースケースやチーム構成に応じたユーザーの整理が完了したら、次は既存のプロジェクトをGitLabに取り込み、コラボレーションを開始します。これらのプロジェクトは、コンピューター上のローカルファイルでも、別のソースコード管理プラットフォームでホストされているものでも構いません。それでは、それぞれのインポート方法を見ていきましょう。
新しいプロジェクトを作成するたびに、一から始める必要はありません。以下の手順に従うことで、既存のレガシープロジェクトやアプリケーションを、バージョン管理の有無にかかわらずGitLabに取り込めます。
ローカルプロジェクトですでにGitが初期化されている場合は、GitLabで新しいプロジェクトを作成し、プロジェクトページの右上にある「コード」ボタンをクリックして、SSHまたはHTTPSのURLを取得します。
cd /project_folder
git remote rename origin old-origin
新しいoriginのGitLabリモートのURLを追加します(SSHを使用する場合)。
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インスタンスで「新規プロジェクト」ボタンをクリックします。
「プロジェクトのインポート」を選択し、インポートソースの一覧から「GitLab エクスポート」をクリックします。
プロジェクト名を指定し、エクスポートファイルを選択した後、「プロジェクトのインポート」をクリックします。
「インポート中です」のページが表示され、完了するとインポートしたプロジェクトのページにリダイレクトされます。
インポートにかかる時間は、プロジェクトのサイズによって異なります。なお、プロジェクトの一部がエクスポートされなかったり、インポート後に若干の変更が生じたりする場合があります。これらの制限事項については、ドキュメントをご確認ください。個々のプロジェクトではなくグループ全体を移行する場合は、直接転送を使用することをおすすめします。これにより、グループ全体のコピーが作成されます。
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の無料トライアルを今すぐお試しください。
*監修:小松原 つかさ @tkomatsubara
(GitLab合同会社 ソリューションアーキテクト本部 シニアパートナーソリューションアーキテクト)*