# リポジトリを複製する

リポジトリのミラーをフォークすることなく維持するには、特別なクローン コマンドを実行して、新しいリポジトリにミラープッシュします。

> \[!NOTE]
> 別の Git ベースのホスティング サービスでホストされているプロジェクトがある場合、GitHub ツールを使用して、プロジェクトを GitHub Importer に自動的にインポートできます。 詳しくは、「[GitHub Importer について](/ja/migrations/importing-source-code/using-github-importer/about-github-importer)」をご覧ください。

元のリポジトリをリポジトリの新しいコピー ("ミラー") にプッシュするには、GitHub.com で\_新しいリポジトリを作成する\_必要があります。[](/ja/repositories/creating-and-managing-repositories/creating-a-new-repository) これらの例では、`exampleuser/new-repository` または `exampleuser/mirrored` はミラーです。

## リポジトリをミラーする

1. <span class="platform-mac">\[ターミナル]</span><span class="platform-linux">\[ターミナル]</span><span class="platform-windows">\[Git Bash]</span> を開きます。

2. リポジトリのベアクローンを作成します。

   ```shell
   git clone --bare https://github.com/EXAMPLE-USER/OLD-REPOSITORY.git
   ```

3. 新しいリポジトリをミラープッシュします。

   ```shell
   cd OLD-REPOSITORY
   git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
   ```

4. 先ほど作成した一時ローカルリポジトリを削除します。

   ```shell
   cd ..
   rm -rf OLD-REPOSITORY
   ```

## Git 大容量ファイルストレージ オブジェクトを含むリポジトリをミラーする

1. <span class="platform-mac">\[ターミナル]</span><span class="platform-linux">\[ターミナル]</span><span class="platform-windows">\[Git Bash]</span> を開きます。

2. リポジトリのベアクローンを作成します。 ユーザ名の例をリポジトリを所有する人や Organization の名前に置き換え、リポジトリ名の例を複製したいリポジトリの名前に置き換えてください。

   ```shell
   git clone --bare https://github.com/EXAMPLE-USER/OLD-REPOSITORY.git
   ```

3. クローンしたリポジトリに移動します。

   ```shell
   cd OLD-REPOSITORY
   ```

4. リポジトリの Git 大容量ファイルストレージ オブジェクトをプルします。

   ```shell
   git lfs fetch --all
   ```

5. 新しいリポジトリをミラープッシュします。

   ```shell
   git push --mirror https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
   ```

6. リポジトリの Git 大容量ファイルストレージ オブジェクトをミラーにプッシュします。

   ```shell
   git lfs push --all https://github.com/EXAMPLE-USER/NEW-REPOSITORY.git
   ```

7. 先ほど作成した一時ローカルリポジトリを削除します。

   ```shell
   cd ..
   rm -rf OLD-REPOSITORY
   ```

## 別の場所にあるリポジトリをミラーする

元のリポジトリから更新を取得するなど、別の場所にあるリポジトリをミラーする場合は、ミラーをクローンして定期的に変更をプッシュできます。

1. <span class="platform-mac">\[ターミナル]</span><span class="platform-linux">\[ターミナル]</span><span class="platform-windows">\[Git Bash]</span> を開きます。

2. リポジトリのミラーしたベアクローンを作成します。

   ```shell
   git clone --mirror https://github.com/EXAMPLE-USER/REPOSITORY-TO-MIRROR.git
   ```

3. プッシュの場所をミラーに設定します。

   ```shell
   cd REPOSITORY-TO-MIRROR
   git remote set-url --push origin https://github.com/EXAMPLE-USER/MIRRORED
   ```

   ベアクローンと同様に、ミラーしたクローンにはすべてのリモートブランチとタグが含まれますが、フェッチするたびにすべてのローカルリファレンスが上書きされるため、常に元のリポジトリと同じになります。 プッシュする URL を設定することで、ミラーへのプッシュが簡素化されます。

4. ミラーを更新するには、更新をフェッチしてプッシュします。

   ```shell
   git fetch -p origin
   git push --mirror
   ```

## 参考資料

* [GitHub Desktop から GitHub に変更をプッシュする](/ja/desktop/making-changes-in-a-branch/pushing-changes-to-github-from-github-desktop#pushing-changes-to-github)
* [GitLarge File Storage および GitHub Desktop について](/ja/desktop/configuring-and-customizing-github-desktop/about-git-large-file-storage-and-github-desktop)