サブフォルダを新規リポジトリに分割する
Git リポジトリ内のフォルダを、全く新しいリポジトリに変更できます。
リポジトリの新しいクローンを作成した場合でも、フォルダを別のリポジトリに分割したとき、Git の履歴や変更を失うことはありません。
-
ターミナルターミナルGit Bashターミナル を開いてください。
-
現在のワーキングディレクトリを、新しいリポジトリを作成したい場所に変更します。
-
サブフォルダのあるリポジトリをクローンします。
$ git clone https://hostname/USERNAME/REPOSITORY-NAME
-
ワーキングディレクトリをクローンしたリポジトリに変更します。
$ cd REPOSITORY-NAME
-
リポジトリのファイルからサブフォルダを抽出するには、以下の情報を指定して
git filter-branch
を実行します。-
FOLDER-NAME
: 別のリポジトリの作成元にしたい、プロジェクト内のフォルダです。参考: Windows ユーザは、 フォルダを区切るために、
/
を使ってください。 -
BRANCH-NAME
:master
やgh-pages
などの、現在のプロジェクトのデフォルトブランチです。$ git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME BRANCH-NAME # Filter the specified branch in your directory and remove empty commits > Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (89/89) > Ref 'refs/heads/BRANCH-NAME' was rewritten
これで、リポジトリにはサブフォルダ内にあったファイルのみが含まれることになります。
-
-
GitHub Enterprise 上で新しいリポジトリを作成します。
-
At the top of your new GitHub Enterprise repository's Quick Setup page, click to copy the remote repository URL.
参考: HTTPS と SSH URL との違いについては、「どのリモート URL を使うべきか?」を参照してください。
-
リポジトリの既存のリモート名を確認します。
origin
やupstream
がよく使われます。$ git remote -v > origin https://hostname/USERNAME/REPOSITORY-NAME.git (fetch) > origin https://hostname/USERNAME/REPOSITORY-NAME.git (push)
-
既存のリモート名およびステップ 7 でコピーしたリモートリポジトリ URL を使って、新しいリポジトリの新しいリモート URL をセットアップします。
git remote set-url origin https://hostname/USERNAME/NEW-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 Enterprise の新しいリポジトリにプッシュします。
git push -u origin BRANCH-NAME