【Git】大きくなったリポジトリの一部を新しいリポジトリ移行する

こちらのサイトではDRUPAL10に関連する記事を掲載しています。

はじめに

前回の記事でロリポップレンタルサーバーにGitを移行したときのことを書きました。

もう半年以上ロリポップでGitを運用していますが今のところは順調です。レンタルサーバーは安くで容量も大きいのでいくら使ってもそんなに課金されることもなく本当に助かります。

ところで、今回はこのサイトでも利用しているWordPressのプラグインが外でも使っていて頻繁にバージョンアップをしているので、そこだけ切り出して別のリポジトリに移すことにしました。

サーバー側の設定

SSH接続

ロリポップ管理画面でSSH接続情報を確認してTERA-TERM等のターミナルソフトでロリポップサーバーに接続します。  

リポジトリの作成

まず新しくリポジトリ情報を置くためのディレクトリを作成します。その後、既存のリポジトリから切り出したディレクトリをここにPUSHします。

このあたりは前回と同じです。

git init --bare --shared

を入力します。 正常に終了すると、リポジトリのフルパスが表示されますので忘れないように保存しておきます。    

切り出したいリポジトリを新規クローンを作成する

今回はSSHでGITリポジトリにアクセスするので事前にSSH接続ができることを確認しておきます。

接続は公開鍵をして、秘密鍵はユーザディレクトリの.ssh直下に置くか、.ssh/configファイルへの設定が必要です。

ssh://{SSHユーザーアカウント}@{SSHサーバー}:{ポート番号}{リモートリポジトリのフルパス}

接続情報を、ユーザディレクトリの.ssh/configに設定してある場合は、{SSHユーザーアカウント}@{SSHサーバー}:{ポート番号}を置き換えることができるので簡略化できます。

ssh://{configで設定した接続情報名称}{リモートリポジトリのフルパス}

ロリポップの場合、SSH接続情報は次のようになります
ssh://{configで設定した接続情報名称}ロリポップ内のGITディレクトリ絶対パスクローンコマンドは以下のとおりです

git clone ssh://{configで設定した接続情報名称}ロリポップ内のGITディレクトリ絶対パス {新規に作成するディレクトリ名}

新規に作成するディレクトリ名は、指定しない場合はリモートリポジトリのフォルダ名になります。今回は新しく別のディレクトリを作成ために既存のものと別に作成するためディレクトリがかぶらないようにします

フォルダが存在するブランチにチェックアウトする

git checkout -b ローカルブランチ名 origin/リモートのブランチ名

複製したリポジトリから対象以外の情報を削除する

git filter-branch --prune-empty --subdirectory-filter 対象フォルダのパス

リモートリポジトリを変更する

git remote set-url origin 新しいリモートリポジトリのURL

リモートURLが変更されたことを確認する

git remote -v

新規リモートリポジトリに作成する

先に作っておいたリモートリポジトリに下記のコマンドでPUSHします。

git push -u origin "ブランチ名"

git push は、特に初めてブランチをPushするときに「-u」オプションをつけることを推奨されます。このオプションにより、push 先のリモートブランチが、push 成功時に上流ブランチとして設定されます。

このサイトに関するご意見・ご質問はこちらまで

この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました