更新日:2025年5月26日

14分で読めます

GitLab入門:プロジェクトをGitLabにインポートする方法

Bitbucket、Gitea、GitHub、GitLab Self-Managedなど、さまざまなソースからプロジェクトをインポートする方法についてご説明します。

「GitLab入門」シリーズへようこそ!このシリーズでは、GitLab DevSecOpsプラットフォームを初めて使う方に向けて、基本的な使い方を解説します。

GitLab DevSecOpsプラットフォームを最大限に活用するためには、プロジェクトのインポート方法を理解することがきわめて重要です。アカウントのセットアップ、ユーザーの招待、ユースケースやチーム構成に応じたユーザーの整理が完了したら、次は既存のプロジェクトをGitLabに取り込み、コラボレーションを開始します。これらのプロジェクトは、コンピューター上のローカルファイルでも、別のソースコード管理プラットフォームでホストされているものでも構いません。それでは、それぞれのインポート方法を見ていきましょう。

ローカルプロジェクトファイルをインポートする

新しいプロジェクトを作成するたびに、一から始める必要はありません。以下の手順に従うことで、既存のレガシープロジェクトやアプリケーションを、バージョン管理の有無にかかわらずGitLabに取り込めます。

Gitプロジェクト

ローカルプロジェクトですでにGitが初期化されている場合は、GitLabで新しいプロジェクトを作成し、プロジェクトページの右上にある「コード」ボタンをクリックして、SSHまたはHTTPSのURLを取得します。

GitLabでSSH/HTTPS
URLを使用して新規プロジェクトを作成する

  1. ターミナルに切り替え、プロジェクトフォルダに移動します。

cd /project_folder  

  1. 既存のGit originをバックアップします。


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  

すべてのブランチタグをGitLabにプッシュします。


git push --set-upstream origin --all  

git push --set-upstream origin --tags  

これで、すべてのファイル、ブランチ、タグがGitLabにプッシュされ、コラボレーションを開始できるようになります。

Gitが未初期化のプロジェクト

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ソース

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

エクスポートプロジェクト画面

エクスポート手順:

  • プロジェクトの設定に移動し、「一般」の項目をクリックします。

  • スクロールして「高度な設定」 セクションを展開します。

  • プロジェクトのエクスポート」を選択します。

  • 次の通知が表示されます。「プロジェクトのエクスポートを開始しました。ダウンロードリンクをメールで送信し、このページで利用可能になります。」

エクスポートの生成が完了したら、メールに記載されたリンクを開くか、プロジェクトの設定ページを更新すると、「エクスポートをダウンロード」オプションが表示されます。

プロジェクトをインポートする

エクスポートされたGitLabプロジェクトをインポートする

  • 対象のGitLabインスタンスで「新規プロジェクト」ボタンをクリックします。

  • プロジェクトのインポート」を選択し、インポートソースの一覧から「GitLab エクスポート」をクリックします。

  • プロジェクト名を指定し、エクスポートファイルを選択した後、「プロジェクトのインポート」をクリックします。

  • 「インポート中です」のページが表示され、完了するとインポートしたプロジェクトのページにリダイレクトされます。

インポートにかかる時間は、プロジェクトのサイズによって異なります。なお、プロジェクトの一部がエクスポートされなかったり、インポート後に若干の変更が生じたりする場合があります。これらの制限事項については、ドキュメントをご確認ください。個々のプロジェクトではなくグループ全体を移行する場合は、直接転送を使用することをおすすめします。これにより、グループ全体のコピーが作成されます。

サードパーティプロバイダー

GitLabは、Bitbucket Cloud、Bitbucket Server、FogBugz、Gitea、GitHubからのプロジェクトのインポートに対応しています。インポート手順は、対応しているすべてのサードパーティでほぼ同じですが、認証方法が異なります。ここでは、認証方法の例をいくつかご紹介します。

GitHub

GitHub認証画面

GitHubのプロジェクトをGitLabにインポートする場合、以下の3つの方法があります。

GitHubのパーソナルアクセストークンを使用する

APIを使用する

「GitHub OAuthを使用する」方法と「パーソナルアクセストークンを使用する」方法は似ていますが、GitLabがリポジトリへアクセスするための認証方法に違い があります。より簡単なのはOAuthを使用する方法で、「GitHubで認証」ボタンをクリックするだけで、GitHubの認証ページにリダイレクトされ、アクセスを許可することで接続が完了します。認証後、プロジェクトの一覧が表示され、インポートするプロジェクトを選択できます。

「リポジトリをGitHubからインポートする」画面

OAuthを使用しない場合は、repoスコープとread: orgスコープを選択してGitHubのパーソナルアクセストークンを生成し、それを「インポート」ページで入力する必要があります。APIを使ってインポートする場合は、このパーソナルアクセストークンを使用することで、スクリプトやアプリケーションでGitLabのImport REST APIエンドポイントを利用できます。

次のデモ動画では、GitLabのシニアデベロッパーアドボケートを務めるFernando Diazが、OAuthを使ってGitHubからプロジェクトをインポートする方法を解説しています。

GitLabのインポートに関するドキュメントでは、前提要件、既知の問題、GitHub Enterpriseからのインポート手順、その他の重要な情報を参照していただけます。

Bitbucket

Bitbucketからプロジェクトをインポートする手順は、GitHubの例とほとんど同じです。Bitbucket Cloud(BitbucketのSaaS版)を使用する場合はOAuth認証が可能ですが、Bitbucket Server(エンタープライズ向けのセルフホスト版)の場合は、URL、ユーザー名、パーソナルアクセストークンを入力する必要があります。「インポート」画面でBitbucket Cloudを選択すると、自動的にAtlassianの認証ページ に移動し、Bitbucketの認証が行われます。

Bitbucketからプロジェクトをインポートする

Bitbucketのプロジェクトは、GitLab Import APIを使用してインポートすることも可能です。

Gitea

Giteaからプロジェクトをインポートする

Giteaからプロジェクトをインポートするには、Giteaのプラットフォーム上でパーソナルアクセストークンを作成し、それをGiteaサーバーのURLとともにGitLabのインポートページで入力する必要があります。なお、OAuth認証はサポートされていません。

汎用リモートGitリポジトリ

リモートGitリポジトリからプロジェクトをインポートする

お使いのGitプロバイダーがサポートされていない場合や、サポートされている方法でインポートできない場合、アクセス可能なhttps://またはgit://のURLを使ってリポジトリをインポートできます。リポジトリが公開されていない場合は、リポジトリURLに加えて、ユーザー名とパスワード(または多要素認証が必要な場合はアクセストークン)を入力する必要があります。

この方法は、リモートプロジェクトのコピーを維持し、同期を保つ目的にも使用できます。これをミラーリングといい、異なるプラットフォーム間でリポジトリを同期し、最新の状態を維持できます。たとえば、プライベートとパブリックのリポジトリを分けつつ、両者で同じ内容を保持できるため、内部プロジェクトをオープンソース化する際に便利です。また、異なるプラットフォームを使用する契約業者と協力していて、両者がコードベースにアクセスする必要がある場合にも活用できます。

まとめ

GitLabのインスタンス間や外部ソースからのインポートおよび移行は、どのデータをどの方法でインポートするのかを明確に計画した上で実施すべき重要なプロセスです。ほとんどのサードパーティのインポート方法では、ファイル、イシュー、マージリクエストなどのプロジェクトアイテムがインポートされますが、一部の方法には既知の問題や制限があることにご注意ください。GitLabのインポートに関するドキュメントには、サポートしているすべての方法の詳細情報が記載されており、移行を計画する際に役立ちます。

もっとGitLabについて知りたい場合は、GitLabユニバーシティのコースに登録するか、GitLab Ultimateの無料トライアルを今すぐお試しください。



*監修:小松原 つかさ @tkomatsubara

(GitLab合同会社 ソリューションアーキテクト本部 シニアパートナーソリューションアーキテクト)*

ご意見をお寄せください

このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成してあなたの声を届けましょう。
Share your feedback

フォーチュン100企業の50%以上がGitLabを信頼

より優れたソフトウェアをより速く提供

インテリジェントなDevSecOpsプラットフォームで

チームの可能性を広げましょう。