リポジトリ内のサブディレクトリを別のリモートリポジトリにする

GitはSVNのようにサブディレクトリのみを取得するということができません。(階層維持される)

本記事ではローカル環境で、ひとつのリモートリポジトリ(中央リポジトリ)に複数のプロジェクト(サブディレクトリ)を登録してしまった後、サブディレクトリを別のリモートリポジトリ(中央リポジトリ)に移動させる(複製する)方法を解説します。

Git サブディレクトをルートに移動

上記、subdirprj1sub.gitというBareリポジトリのルートに移動させます。

1.TortoiseGitでの操作

まず、TortoiseGitを使って操作します。

  1. 新しく中央リポジトリを作成したいフォルダで右クリック
  2. Git クローン(複製)... Git クローン
  3. ダイアログに以下を設定
    • URL:に複製したいディレクトリを含む中央リポジトリのパス
    • ディレクトリに新しい中央リポジトリのパス
    • Bareリポジトリにクローンをチェック
    Git サブディレクトをルートに移動

この時点でprj1sub.gitの内容は元のリポジトリと同じです。

Git サブディレクトをルートに移動

2.Git Bashでの操作

次にGit Bashを使ってprj1sub.gitを操作します。

  1. 複製先のフォルダ(prj1sub.git)で右クリック
  2. Git Bash Here Git Bash Here
  3. Git Bashで上で以下を実行
git filter-branch --subdirectory-filter [サブディレクトリのパス] HEAD

今回の場合だと、

git filter-branch --subdirectory-filter subdir HEAD

これでprj1sub.gitはサブディレクト(subdir)の内容がトップになります。

Git サブディレクトをルートに移動

右クリックメニューにGit Bashが無い場合は、スタートメニューからGit Bashを起動し、複製先のフォルダまで移動してください。
私はGitインストールフォルダの下にremoteフォルダを作成し、そこにリモートリポジトリを配置していたので、以下のように移動しました。

cd /
cd remote
cd prj1sub.git
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です