【Git】リモートリポジトリを引っ越しする
![【Git】AWSからロリポップにリモートリポジトリを引っ越しする](/sites/default/files/styles/wide/public/2023-12/git-230x173_0.png?itok=mFjkC0PJ)
はじめに
長年AWSのEC2無料枠でgit管理していましたがそろそろ一年が経過するので、サブで借りていたLOLIPOPのハイスピードプランにいくつか移行してみました。方法は至って簡単で、まずデータをオブジェクトのままダウンロードしてバックアップを取り、次に移行元サーバーにGitをインストールした後にそのデータを移行先サーバーにアップロードします。その手順をメモ代わりに残しておきます。
環境
【ローカルPC】
WINDOWS11
【リモートサーバー】
移行元:
AWS EC2
(2.micro)
移行先:
LOLIPOPレンタルサーバー
ハイスピードプラン
移行手順の概要
AWS EC2サーバーのGITリポジトリをWINDOS11のローカルPCからSSH接続してGITリポジトリをCLONEでローカルに取得したのち、LOLIPOPサーバーにSSH接続してローカルに取得したリポジトリをPUSHしてする。
コマンドラインで行う場合は、要領でおこなう
- コマンドラインでssh接続できることを確認する
- まず移行元のGitサーバーのクローンを作成します
- 次に作成されたクローンの.gitフォルダに移行します
- 最後にすべての更新情報を新しいGitサーバーにPUSHします
git clone --mirror <SOURCE_REPOSITORY_URL>
cd <REPOSITORY>
git push --mirror <DESTINATION_REPOSITORY_URL>
移行手順の詳細
1.SSH接続
WINDOWS PCのターミナルを起動します。
SSHコマンドで移行元のサーバーに接続します。
ssh {アカウント名}@ssh.lolipop.jp -p 2222 -i {秘密鍵のパス}
接続できたら秘密鍵をホームディレクトリの.ssh
フォルダにid_rsa
の名前で入れる
cd ~/.ssh
copy {秘密鍵パス} ./id_rsa
今度は秘密鍵パスの指定を外してSSH接続できるかどうか確認する
ssh {アカウント名}@ssh.lolipop.jp -p 2222
デフォルトの秘密鍵で接続できればOK
2.移行元のサーバーからGITレポジトリのバックアップを取得する
git clone に mirrorオプションを付与して移行元のリポジトリのバックアップを取得します。
パラメータにはリモートリポジトリのURLを指定します。以下はSSH接続の場合です。
git clone --mirror ssh://{アカウント名}@{ホスト名}:{ポート番号}{GITリポジトリパス}
※ ~ssh/configにssh接続設定が存在する場合は、SSH接続情報(下記の例では、「{アカウント名}@{ホスト名}:{ポート番号}」をSSH接続設定の名前に置き換えてもかまいません。
WINDOWS11では次のようなエラーが出ることがある
Unable to negotiate with 133.130.35.108 port 2222: no matching host key type found. Their offer: ssh-rsa,ssh-dss
fatal: Could not read from remote repository.
その場合は、ホームディレクトリの.ssh
フォルダにconfig
ファイルを作成して次のコードを設定する
Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
UpdateHostKeys no
SSHクライアントがバージョンンアップしたことが原因のようである
また、次のエラーが出る場合は、GITがcacheをみにいっているので、UpdateHostKeys no
をconfigについかする
Cannot access gitlab repo.....
3.移行先のサーバーにGITレポジトリを作成する
移行先さーばーに接続する。
次に、GITサーバーのルートディレクトリでプロジェクトふぉるだを作成する
mkdir projectフォルダ
cd projectフォルダ
git init --bare --shared
4.移行先のサーバーのGITレポジトリにプッシュする
移行先サーバーの秘密鍵をホームディレクトリの.ssh
フォルダにid_rsa
の名前で入れる
cd ~/.ssh
copy {秘密鍵パス} ./id_rsa
前回と同様に秘密鍵パスの指定を外してSSH接続できるかどうか確認する
ssh {アカウント名}@ssh.lolipop.jp -p 2222
デフォルトの秘密鍵で接続できればOK
移行先のアカウント名、ホスト名、ポート名、GITリポジトリパスを設定してPUSHする
git push --mirror ssh://{アカウント名}@{ホスト名}:{ポート番号}{GITリポジトリパス}
5.移行先のサーバーからリポジトリーのクローンを作成する
確認のためリモートリポジトリから新しいローカルリポジトリを作成してみる
git clone ssh://{アカウント名}@{ホスト名}:{ポート番号}{GITリポジトリパス}
ローカル環境に新しいリポジトリがでいていればOK
参考
http://root99.blogspot.com/2019/01/osdsassh-key.html
この記事に関するご質問やご意見などございましたらお問い合わせフォームからお気軽にご連絡ください。