Gitを使用してリモートリポジトリを構成してライブラリ管理を行う!

gitを使用してローカル環境で管理していたリポジトリを別サーバに共有のリモートリポジトリとして使用できるようにしてみましょう。リモートリポジトリとして構築すると他のマシンからもリポジトリが使用できるようになります。

使用環境

  • Ubuntu 18.04.3 Desktop
  • git version 2.17.1

ローカルのリポジトリの構築

以下の記事を参考にしてローカルのリポジトリを構築します。

リモートリポジトリの作成

リモートリポジトリを構築するマシン上で、空のリモートリポジトリを作成します。「git init」コマンドは、ローカルのときと異なり、「--bare --shared」のオプションを使用します。

mkdir -p ~/repo-git/sample/sample001.git
$ git init --bare --shared
Initialized empty shared Git repository in /home/admin001/repo-git/sample/sample001.git/

ローカルのリポジトリにリモートリポジトリの情報を登録

ローカルのリポジトリの内容をリモートリポジトリに反映します。ローカルのリポジトリにリモートのリポジトリを「git remote add origin」コマンドで登録します。以下は、リモートリポジトリとの接続にSSHを使用する場合の例になります。(接続ユーザ:admin001,リモートリポジトリのサーバ名:gitsrv001)

$ git remote add origin admin001@gitsrv01:repo-git/sampel/sample001.git
$ git remote -v
origin	admin001@gitsrv01:repo-git/sample/sample001.git (fetch)
origin	admin001@gitsrv01:repo-git/sample/sample001.git (push)

ローカルのリポジトリの内容をにリモートリポジトリに反映

ローカルのリポジトリの内容をにリモートリポジトリに反映させます。以下完了するとリモートリポジトリが完成です。

$ git push origin master
admin001@gitsrv01's password: 
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6), 472 bytes | 472.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To gitsrv01:repo-git/sample/sample001.git
 * [new branch]      master -> master

ローカルのリポジトリの変更内容をにリモートリポジトリに反映

ローカルのリポジトリの内容を変更したら、「git push」コマンドでリモートリポジトリを更新します。

$ git push
admin001@gitsrv01's password: 
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 295 bytes | 295.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To gitsrv01:repo-git/sample/sample001.git
   2e3d0a3..0708a93  master -> master

リモートリポジトリからローカルのリポジトリを構築

リモートリポジトリが構築できれば、「git clone」コマンドで新たにローカルのリポジトリを構築できます。これで、複数のローカルのリポジトリで更新を行いながら作業を行うことができるようになります。以下、カレントディレクトリにローカルリポジトリを作成していますが、ローカルリポジトリの配置先を指定しない場合は、リモートリポジトリ名から「.git」を除いた名前でローカルのリポジトリが作成されます。

$ mkdir -p ~/repo-git/sample/sample001_local
$ cd ~/repo-git/sample/sample001_local
$ git clone admin001@gitsrv01:repo-git/sample/sample001.git .
Cloning into '.'...
admin001@gitsrv01's password: 
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.

おわりに

リモートリポジトリを構築することにより、多数のマシンとライブラリを共有することができるようになりました。これは、プログラム開発環境やシステム構築環境を整備するための強力なライブラリ基盤が整ったことになります。