NASをリモートリポジトリにしてgitでプロジェクトを管理する

仕事で色々とプロジェクトを抱えていると、更新情報をしっかり管理しておく必要があります。GitHub は無料から利用できますが、無料だとパブリックリポジトリしか作れないといった制約があり、プロジェクトを管理するとなると有料プランを利用しないといけません。ここでは ローカルマシンに接続している NAS に git リポジトリを作成してお手軽にプロジェクトを管理する方法を紹介します。この記事では Mac を対象としています。

gitのインストール

git のインストールには homebrew を使います。Mac にインストールされていない場合はターミナルで以下のコードをコピペして実行してください。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

続いて git のインストールです。

brew install git

これで最低限の準備ができます。

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

NAS上にリモートリポジトリを作成します。リポジトリにはベアリポジトリとノンベアリポジトリの2種類があります。簡単に言うと、作業用として手元のパソコンに置いておくのがノンベアリポジトリで、更新を管理するために NAS に置いておくのがベアリポジトリです。もう少し言うと、ファイルそのものがあるワーキングディレクトリをもつのがノンベアリポジトリで、更新情報だけをもちワーキングディレクトリ(ファイルそのもの)をもたないのがベアリポジトリです。複数人で管理する場合は、それぞれがノンベアリポジトリをもっていて、一つのベアリポジトリで更新を管理することになります。


まずは NAS と接続します。Finder から command + K で NAS に接続してください。その後ターミナルで NAS に移動します。

ls /Volumes

とすると、Mac に接続している端末のボリュームラベルが表示されます。例えば home というボリュームラベルをもっている NAS だったとすると、

cd /Volumes/home

でそのディレクトリに移動できます。続けて

ls

と打ったときに、Finder の方で見えているファイル・ディレクトリと同じものが表示されていれば、ディレクトリの移動が正しく行われています。git を置く場所をボリュームトップにする場合はこれだけで大丈夫ですが、サブディレクトリに git を置く場合は続けてそのディレクトリに移動してください。


git を保存するディレクトリに移動できたら、空のベアリポジトリを作成します。

mkdir [project name].git
cd [project name].git
git init --bare

ここではプロジェクトの git を置くためのディレクトリを作成し、そのディレクトリに移動して git init しています。--bare オプションをつけることでベアリポジトリを作成できます。作成するとこんな感じの出力がされます:

Initialized empty Git repository in /Volumes/git/yukiyuri-amplify.git

プロジェクトディレクトリにローカルリポジトリを作成する

次はプロジェクトディレクトリにローカルリポジトリを作成します。ここではすでにプロジェクトが存在していて、コミットするファイルが存在しているものとします。ターミナルでそのディレクトリに移動し、ローカルリポジトリを作成します:

cd [path to project directory]
git init

git init が成功すると、先ほどと同じようなメッセージが表示されます。次いでプロジェクトのファイルを追加してコミットします:

git add .
git commit -m 'initial commit'

ここでの initial commit はコミットするときのメッセージです。日本語でも構いません。成功すると

create mode 100644 index.php
...

のようなメッセージがファイルの数だけずらっと表示されます。

ローカルリポジトリをリモートリポジトリにプッシュする

ローカルとリモートの準備と初回コミットが終わったので、ローカルからリモートにプッシュします。

git remote add origin /Volumes/[path to git dir]/[project name].git
git push origin master

git remote add では リポジトリ名 /Volumes/[path to git dir]/[project name].git に短縮名の origin をつけています。別に origin でなくてもいいですが、慣習として origin が使われます。次の git push origin master は、origin という名前をつけたリポジトリの master ブランチに、ローカルの master ブランチをプッシュしています。これは

git push /Volumes/[path to git dir]/[project name].git master:master

とするのと同じです。master:master<src>:<dist>、つまり「ローカルの master ブランチをリモートの master ブランチへ」になっています。<dist> が省略されると、リモートに <src> と同じブランチがあればそれを更新し、なければリモートに新たにブランチが作成されることになっています。プッシュが成功すると、このようなメッセージがターミナルに表示されます:

Counting objects: 104, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (100/100), done.
Writing objects: 100% (104/104), 112.33 KiB | 205.00 KiB/s, done.
Total 104 (delta 18), reused 0 (delta 0)
remote: Resolving deltas: 100% (18/18), done.
To /Volumes/git/yukiyuri-amplify.git
 * [new branch]      master -> master

別のディレクトリにクローンしてファイルをチェック

別のディレクトリに移動して、リモートリポジトリをクローンしてプロジェクトがコピーされていることを確認します:

cd ~
mkdir temp
cd temp
git clone /Volumes/[path to git dir]/[project name].git
cd [project name]
ls

ここではホームディレクトリに移動して temp ディレクトリを作成し、リポジトリをクローンして中のファイル一覧を表示しています。先ほどプッシュしたプロジェクトと同じ中身が表示されていれば成功です。

SSH で接続してプッシュする

先ほどまでは Finder での「サーバに接続」で NAS のボリュームをマウントすることで push していましたが、NAS 側で SSH 接続が許可されている場合は、SSH でサーバに接続することも可能です。この場合は

git remote add origin ssh://[user name]@[IP address]/[path to git dir]/[project name].git

で origin を登録して、git push origin master でプッシュすることができます。[user name] には NAS のユーザー名、[IP address] には NAS の IP アドレスを入れます。例えば

git remote add origin ssh://yuki@192.168.3.100/git_volume/myproject.git

のような感じです。

origin にすでに別のリモートを登録している場合は、一旦 git remote remove origin で削除した後に git remote add ... するか、もしくは origin とは別の名前としてリモートリポジトリを登録することになります。

GUIアプリならForkがいいかも…

ターミナルの操作に慣れていない人は GUI アプリを使うのがいいと思います。git の GUI アプリはたくさんあって、中でも SourceTree は有名ですが、Atlassian アカウントを作成しないといけないという超絶面倒なアプリなので、ForkGitKraken の方がおすすめです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です