更新日:2025年5月26日

1分で読めます

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

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

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

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

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

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

Gitプロジェクト

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

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

  1. ターミナルに切り替え、プロジェクトフォルダに移動します。
cd /project_folder  
  1. 既存のGit originをバックアップします。

git remote rename origin old-origin

  1. 新しい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  
  1. すべてのブランチタグを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のプロジェクトインポート機能を利用できます。この機能は、新しいプロジェクトを作成する際に使用できます。

![新規プロジェクト作成画面](// images.ctfassets.net/r9o86ar0p03f/7wDEsJUuoNKGQ9GlfHfBOx/9e100dd74315db1ed5152ae8f94cff48/image7.png)

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

![サードパーティのソースからプロジェクトをインポートする](// images.ctfassets.net/r9o86ar0p03f/KwAdfu5Bw1WMBIT2vcH61/8af69e5c7bc932bc85c3a07b7f490577/image6.png)

GitLabソース

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

![エクスポートプロジェクト画面](// images.ctfassets.net/r9o86ar0p03f/2swSLi5u64N4woz9EPkZPK/98deb22fb2270870ffacad4c4d2cedc0/image9.png)

エクスポート手順:

  • プロジェクトの設定に移動し、「一般」の項目をクリックします。
  • スクロールして「高度な設定」 セクションを展開します。
  • プロジェクトのエクスポート」を選択します。
  • 次の通知が表示されます。「プロジェクトのエクスポートを開始しました。ダウンロードリンクをメールで送信し、このページで利用可能になります。」
  • エクスポートの生成が完了したら、メールに記載されたリンクを開くか、プロジェクトの設定ページを更新すると、「エクスポートをダウンロード」オプションが表示されます。

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

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

  • 対象のGitLabインスタンスで「新規プロジェクト」ボタンをクリックします。
  • プロジェクトのインポート」を選択し、インポートソースの一覧から「GitLab エクスポート」をクリックします。
  • プロジェクト名を指定し、エクスポートファイルを選択した後、「プロジェクトのインポート」をクリックします。
  • 「インポート中です」のページが表示され、完了するとインポートしたプロジェクトのページにリダイレクトされます。

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

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

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

GitHub

GitHub認証画面

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

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

![「リポジトリをGitHubからインポートする」画面](// images.ctfassets.net/r9o86ar0p03f/XoEnB39K89NIGGnqnEDsX/ccd3fa8f263155316281c9881a5efff3/image2.png)

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リポジトリからプロジェクトをインポートする](// images.ctfassets.net/r9o86ar0p03f/7AHq1ELVMFWvPT3tpYwx2T/cba452487afc9acc6987f0426168e167/image1.png)

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

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

まとめ

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

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



監修:小松原 つかさ @tkomatsubara
(GitLab合同会社 ソリューションアーキテクト本部 シニアパートナーソリューションアーキテクト)

ご意見をお寄せください

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

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

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

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

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