仕事で色々とプロジェクトを抱えていると、更新情報をしっかり管理しておく必要があります。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 ディレクトリを作成し、リポジトリをクローンして中のファイル一覧を表示しています。先ほどプッシュしたプロジェクトと同じ中身が表示されていれば成功です。

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

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