メモ
これらの手順に従うには Git バージョン 2.22.0 以降が必要です。それ以外の場合 git filter-repo は機能しません。
リポジトリの新しいクローンを作成した場合でも、フォルダを別のリポジトリに分割したとき、Git の履歴や変更を失うことはありません。 ただし、元のリポジトリのブランチとタグは新しいリポジトリに含まれないことに注意してください。
-
[ターミナル][ターミナル][Git Bash] を開きます。
-
現在のワーキングディレクトリを、新しいリポジトリを作成したい場所に変更します。
-
サブフォルダのあるリポジトリをクローンします。
git clone https://HOSTNAME/USERNAME/REPOSITORY-NAME -
ワーキングディレクトリをクローンしたリポジトリに変更します。
cd REPOSITORY-NAME -
リポジトリ内の残りのファイルからサブフォルダーを除外するには、
git-filter-repoをインストールした後、次の引数を指定してgit filter-repoを実行します。FOLDER-NAME: 別のリポジトリを作成するプロジェクト内のフォルダー。
ヒント
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 -
GitHub に新しいリポジトリを作成します。
-
GitHub の [クイック セットアップ] ページにある新しいリポジトリの上部で、 をクリックしてリモート リポジトリの URL をコピーします。
![リポジトリ内の [クイック セットアップ] ヘッダーのスクリーンショット。 リモート URL の横にある 2 つの四角形が重なったアイコンがオレンジ色の枠線で囲まれています。](/assets/cb-48146/images/help/repository/copy-remote-repository-url-quick-setup.png)
ヒント
HTTPS と SSH の URL の違いについては、「リモートリポジトリについて」を参照してください。
-
コピーした自分のリポジトリ用の URL を使って新しいリモート名を追加します。 たとえば、
originやupstreamの 2 つが一般的な選択肢です。git remote add origin https://HOSTNAME/USERNAME/REPOSITORY-NAME.git -
新しいリポジトリの名前を使い、リモート URL が追加されたことを確認します。
$ git remote -v # Verify new remote URL > origin https://HOSTNAME/USERNAME/NEW-REPOSITORY-NAME.git (fetch) > origin https://HOSTNAME/USERNAME/NEW-REPOSITORY-NAME.git (push) -
変更を GitHub の新しいリポジトリにプッシュします。
git push -u origin BRANCH-NAME