Skip to main content

サブフォルダを新規リポジトリに分割する

Git リポジトリ内のフォルダを、全く新しいリポジトリに変更できます。

Platform navigation

Note

これらの手順に従うには Git バージョン 2.22.0 以降が必要です。それ以外の場合 git filter-repo は機能しません。

リポジトリの新しいクローンを作成した場合でも、フォルダを別のリポジトリに分割したとき、Git の履歴や変更を失うことはありません。 ただし、元のリポジトリのブランチとタグは新しいリポジトリに含まれないことに注意してください。

  1. [ターミナル][ターミナル][Git Bash] を開きます。

  2. 現在のワーキングディレクトリを、新しいリポジトリを作成したい場所に変更します。

  3. サブフォルダのあるリポジトリをクローンします。

    git clone https://github.com/USERNAME/REPOSITORY-NAME
    
  4. ワーキングディレクトリをクローンしたリポジトリに変更します。

    cd REPOSITORY-NAME
    
  5. リポジトリ内の残りのファイルからサブフォルダーを除外するには、git-filter-repo をインストールした後、次の引数を指定して git filter-repo を実行します。

    • FOLDER-NAME: 別のリポジトリを作成するプロジェクト内のフォルダー。

    Tip

    Windows ユーザーは / でフォルダーを区切る必要があります。

    $ git filter-repo --path FOLDER-NAME/
    # Filter the specified branch in your directory and remove empty commits
    

    これで、リポジトリにはサブフォルダー内にあったファイルだけが含まれるようになります。

    特定のサブフォルダーを新しいリポジトリの新しいルート フォルダーにする場合は、次のコマンドを使用してください。

    $ git filter-repo --subdirectory-filter FOLDER-NAME
    # Filter the specific branch by using a single sub-directory as the root for the new repository
    
  6. GitHub に新しいリポジトリを作成します。

  7. GitHub の [クイック セットアップ] ページにある新しいリポジトリの上部で、 をクリックしてリモート リポジトリの URL をコピーします。

    リポジトリ内の [クイック セットアップ] ヘッダーのスクリーンショット。 リモート URL の横に、2 つの重なり合う四角形のアイコンがオレンジ色の枠線で強調表示されています。

    Tip

    HTTPS と SSH の URL の違いについては、「リモートリポジトリについて」を参照してください。

  8. コピーした自分のリポジトリ用の URL を使って新しいリモート名を追加します。 たとえば、originupstream の 2 つが一般的な選択肢です。

    git remote add origin https://github.com/USERNAME/REPOSITORY-NAME.git
    
  9. 新しいリポジトリの名前を使い、リモート URL が追加されたことを確認します。

    $ git remote -v
    # Verify new remote URL
    > origin  https://github.com/USERNAME/NEW-REPOSITORY-NAME.git (fetch)
    > origin  https://github.com/USERNAME/NEW-REPOSITORY-NAME.git (push)
    
  10. 変更を GitHub の新しいリポジトリにプッシュします。

    git push -u origin BRANCH-NAME