Gitとは
少し前までバージョン管理といえばSVNでしたが今ではGitが常識になっています。
GitをWikipediaで調べてみると
gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。
gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。したがって、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。
とかなり難しい説明ですが、要は「分散型」で各個人のディレクトリに変更履歴があるのでネットがない環境でのいつでも作業ができて、ネットがつながった時に更新情報をサーバーに送るというイメージです。
今回は、レンタルサーバー(記事ではロリポップサーバーで解説)の空き領域を利用してGitをインストールして、Bitbucket(Gitウェブサービス)のコミット情報をすべて自前のサーバーに移行します。
サーバー側の設定
SSH接続
ロリポップ管理画面でSSH接続情報を確認してTERA-TERM等のターミナルソフトでロリポップサーバーに接続します。
リポジトリの作成
まずリポジトリ情報を置くためのディレクトリを作成します。その後、作成したディレクトリに移動して、
git init --bare --shared
を入力します。
正常に終了すると、リポジトリのフルパスが表示されますので忘れないように保存しておきます。
クライアント側設定
サーバーで新規に作成した空のリポジトリのクローンを端末側に作成します。
ここではSMARTGITというクライアント側アプリを使用します。
※いつも使っているクライアント側アプリはTOTARISEGITですが、現在別のGITサーバーで使用中のためテスト用に新規アプリとしてSMARTGITを入れてみました。こちらは視覚的にとても分かりやすいです。
クローン生成
今回はSSHでGITリポジトリにアクセスするのでURLは次のようになります
ssh://{SSHユーザーアカウント}@{SSHサーバー}:{ポート番号}{リモートリポジトリのフルパス}
ロリポップの場合は次のようになります
ssh://ロリポップSSHユーザ名@ロリポップSSHサーバー:2222ロリポップ内のGITディレクトリ絶対パス
はじめてSSH通信を行う場合はパスワードを聞いてきますので入力します。保存するにチェックを入れると記憶されますので次回からは入力不要です。
空のリポジトリなので警告メッセージが表示されます
新規ファイルのコミット
変更履歴が端末内に記録、更新されます。
新規ファイルの更新(プッシュ)
端末に記録(コミット)されている更新情報がサーバー内のRITリポジトリに転送され更新されます。
ファイルを修正してコミット
修正ファイルファイルの更新(プッシュ)
他で変更されたファイルの反映(プル)
サーバーのGITリポジトリに保存されている他の人たちの更新情報を、自分の端末内に取り込み反映します。
更新履歴の確認
SMARTGITは変更履歴がイメージとして表示されるのでとても分かりやすいです。
詳しい説明はこちらからどうぞ
Gitサーバーからコミットデータを移行
コミットデータを移行する場合はいったんローカルにクローンを作成します。
作成されたローカルのリポジトリを新しく作成したリモートリポジトリにプッシュします。
コマンドラインから行う場合
コマンドラインで行う場合は、次の三つのコマンドで完了します。
$ git clone --mirror <SOURCE_REPOSITORY_URL> $ cd <REPOSITORY> $ git push --mirror <DESTINATION_REPOSITORY_URL>
- まず移行元のGitサーバーのクローンを作成します
- 次に作成されたクローンの.gitフォルダに移行します
- 最後にすべての更新情報を新しいGitサーバーにPUSHします
こちらのブログを参考にさせていただきました
この方法はコマンドラインになれている人には簡単にできるのでいいです。
ただ、SSHでリモートリポジトリをアクセスする場合にパスワードや秘密鍵の設定が少々面倒です。
SmartGitで行う場合
GmartGitで行う場合も同様に、すでにGitデータが存在するサーバーからクローンを作成します。
ローカルにクローンができましたら、リモートサーバーのリポジトリURLを変更します。
リモートからプロパティを選択します。
新しく作成したGitサーバーのリポジトリ(新規に作成された空リポジトリ)に変更します。
最後にコミット情報を更新(プッシュ)すると移行完了です。
参考