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 アカウントを作成しないといけないという超絶面倒なアプリなので、Fork や GitKraken の方がおすすめです。