ロリポップ!レンタルサーバでGitを使ってみた

ロリポップ!レンタルサーバでGitを使ってみた

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

WordPressのテーマに少しずつ手を入れていますが、修正するたびにバックアップが煩わしいです。

テーマやプラグインを変更すると突然不具合が発生することがあるので、バージョン管理しましょう。Gitを使えば、いつでもどの世代の更新前の状態に戻すことができます。サーバーに置いているのでチームで作業もできます!

この記事を読むとできるようになること
  • ロリポップ!レンタルサーバーでGitが使えるようになります!
  • 他のサーバーで使っていたGitのプロジェクトをロリポップに移行できるようになります!

Gitとは

 

少し前までバージョン管理といえばSVNでしたが今ではGitが常識になっています。

GitをWikipediaで調べてみると

gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。Linuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。

gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。したがって、ネットワークにアクセスできないなどの理由で中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。

とかなり難しい説明ですが、要は「分散型」で各個人のディレクトリに変更履歴があるのでネットがない環境でのいつでも作業ができて、ネットがつながった時に更新情報をサーバーに送るというイメージです。

 

今回は、レンタルサーバー(記事ではロリポップサーバーで解説)の空き領域を利用してGitをインストールして、Bitbucket(Gitウェブサービス)のコミット情報をすべて自前のサーバーに移行します。

サーバー側の設定

SSH接続

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

リポジトリの作成

まずリポジトリ情報を置くためのディレクトリを作成します。その後、作成したディレクトリに移動して、

git init --bare --shared

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

クライアント側設定

サーバーで新規に作成した空のリポジトリのクローンを端末側に作成します。

ここではSMARTGITというクライアント側アプリを使用します。

※いつも使っているクライアント側アプリはTOTARISEGITですが、現在別のGITサーバーで使用中のためテスト用に新規アプリとしてSMARTGITを入れてみました。こちらは視覚的にとても分かりやすいです。

 

SmartGit – Git Client for Windows, macOS, Linux
SmartGit is a Git GUI client with support for GitHub, BitBucket, GitLab pull requests and comments. SmartGit targets professional users.

 

クローン生成

今回はSSHでGITリポジトリにアクセスするのでURLは次のようになります

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

ロリポップの場合は次のようになります
ssh://ロリポップSSHユーザ名@ロリポップSSHサーバー:2222ロリポップ内のGITディレクトリ絶対パス

 

はじめてSSH通信を行う場合はパスワードを聞いてきますので入力します。保存するにチェックを入れると記憶されますので次回からは入力不要です。

 

 

空のリポジトリなので警告メッセージが表示されます

 

 

 

新規ファイルのコミット

変更履歴が端末内に記録、更新されます。

 

 

 

 

新規ファイルの更新(プッシュ)

端末に記録(コミット)されている更新情報がサーバー内のRITリポジトリに転送され更新されます。

 

 

 

 

 

 

ファイルを修正してコミット

 

 

 

 

修正ファイルファイルの更新(プッシュ)

 

 

 

 

 

 

他で変更されたファイルの反映(プル)

サーバーのGITリポジトリに保存されている他の人たちの更新情報を、自分の端末内に取り込み反映します。

 

 

 

 

 

更新履歴の確認

SMARTGITは変更履歴がイメージとして表示されるのでとても分かりやすいです。

 

 

詳しい説明はこちらからどうぞ

SmartGit – Git Client for Windows, macOS, Linux
SmartGit is a Git GUI client with support for GitHub, BitBucket, GitLab pull requests and comments. SmartGit targets professional users.

 

 

 

 

Gitサーバーからコミットデータを移行

コミットデータを移行する場合はいったんローカルにクローンを作成します。 作成されたローカルのリポジトリを新しく作成したリモートリポジトリにプッシュします。  

コマンドラインから行う場合

コマンドラインで行う場合は、次の三つのコマンドで完了します。

$ git clone --mirror <SOURCE_REPOSITORY_URL>
$ cd <REPOSITORY>
$ git push --mirror <DESTINATION_REPOSITORY_URL>
  1. まず移行元のGitサーバーのクローンを作成します
  2. 次に作成されたクローンの.gitフォルダに移行します
  3. 最後にすべての更新情報を新しいGitサーバーにPUSHします

  こちらのブログを参考にさせていただきました

この方法はコマンドラインになれている人には簡単にできるのでいいです。 ただ、SSHでリモートリポジトリをアクセスする場合にパスワードや秘密鍵の設定が少々面倒です。    

SmartGitで行う場合

  GmartGitで行う場合も同様に、すでにGitデータが存在するサーバーからクローンを作成します。 ローカルにクローンができましたら、リモートサーバーのリポジトリURLを変更します。   リモートからプロパティを選択します。 新しく作成したGitサーバーのリポジトリ(新規に作成された空リポジトリ)に変更します。   最後にコミット情報を更新(プッシュ)すると移行完了です。   参考

gitのbareリポジトリのバックアップをとる - tumblr
チームでgitを使うときは個人の公開リポジトリから適宜pullする、なんてことはせずにsvnのように中央集権的なbareリポジトリを作ることになると思います。で、そのリポジトリが吹っ飛んだときとかは、分散型の特性を生かして個人のリポジトリをドラゴンボールみたいに寄せ集めて願い事を唱えながらmergeをしてbareリポジ...
 

参考

Gitの用語

リモートリポジトリ

遠隔のサーバーに存在するリポジトリ。グループで開発する場合はSVNの場合のようにこのリポジトリに各個人が開発したソースコードが集約される。

ローカルリポジトリ

各自のローカルの中にGitで作成するリポジトリです。

ワーキングツリー

個人が編集するための作業用領域のことです。

クローン

リモートリポジトリをローカルリポジトリとしてローカルにコピーします。git cloneコマンドを使います。まず最初はリモートリポジトリのアドレスを使い、クローンすることから始めることになると思います。

コミット

作業フォルダからローカルリポジトリにソースソースをコミットすることです。

ステージング

コミット対象が置かれる領域のことです。

プッシュ

ローカルリポジトリからリモートリポジトリにソースをコミットすること。

フェッチ

リモートリポジトリからローカルリポジトリへバージョン履歴を更新すること。git fetchコマンドで実行できます。(ただし、プルと違ってマージは行われません)

プル

リモートリポジトリからローカルリポジトリのバージョン履歴と作業フォルダを更新すること。git pullコマンドで更新できます。SVNの更新とほぼ同じ。(フェッチと違い、Gitにより自動でマージされます)

ブランチ

ランチを切っていくことでバージョンの管理を分岐していくことができます。

リモートトラッキングブランチ

リモートリポジトリにあるブランチを監視しているブランチです。このトラッキングブランチとローカルリポジトリのブランチを紐付けし、トラッキングブランチが監視しているリモートリポジトリのデータを引っ張ってくるイメージです。リモートトラッキングブランチで何かをするということはなく、ローカルリポジトリとリモートリポジトリの橋渡しをしています

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

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

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