Posted at

リポジトリ内のとあるフォルダを別のリポジトリとして独立させるには?

More than 3 years have passed since last update.

ライブラリソースとアプリケーションのソースを一緒くたに管理していて、あるとき「やっぱり別々にしないとダメだ!」といった状態になったので、検証してみました。

今回は TortoiseGit と Git Bash の2つを使います。


検証手順

手順は以下のとおりです。


  1. 「右クリック > Git クローン」を選択して、元となるリモートリポジトリから新しいリモートリポジトリを作成します。

    「URL」には元となるリモートリポジトリのアドレスを、

    「ディレクトリ」には新しく作成するリモートリポジトリのパスを指定します。



    また、今回はリモートリポジトリを作成するので、「Bareリポジトリにクローン」にチェックを入れます。




  2. 新しく作成したリモートリポジトリを選択して、「右クリック > Git Bash」を選択します。

  3. 以下のコマンドを実行します。

    git filter-branch --subdirectory-filter [分離するディレクトリのパス]



    このコマンドを実行すると、指定したディレクトリ以外の履歴が綺麗さっぱり消えます。

    また、ルートディレクトリも指定したディレクトリになっています。

これで分離できました。


参考サイト