概要
gitを使い始めたばかりで自分一人きりの個人利用ということで、理解を深める意味も込めてクラウドストレージ上にリモートリポジトリを作成しました。
Googleドライブに限らず、デスクトップアプリで同期できるクラウドストレージサービスにおいては、同様の手法で運用可能だと思います。
環境インストール
1.パソコン版Google Driveをインストール
2.gitをインストール
$ brew install git #MacならHomebrewが簡単
> winget install git.git #WindowsならWingetが簡単
リモート用ベアリポジトリを作成
1.Google Driveに「<ディレクトリ名>.git」フォルダを作成
$ mkdir g:\マイドライブ\Project\<ディレクトリ名>.git
$ cd g:\マイドライブ\Project\<ディレクトリ名>.git
2.ベアリポジトリを作る
$ git init --bare --shared
実ファイル転送用ノンベアリポジトリを作る
1.実ファイル転送用ノンベアリポジトリをGoogle Driveの任意の場所にcloneする
$ git clone 'g:\マイドライブ\Project\<ディレクトリ名>.git'
ローカルマシン側に作業ディレクトリを作成する
1.作業ディレクトリ用ノンベアリポジトリをローカルマシン側の任意の場所にcloneする
$ cd c:\Project
$ git clone 'g:\マイドライブ\Project\<ディレクトリ名>.git'
2.リモートリポジトリへpushする
$ cd <ディレクトリ名>
$ touch hoge.txt
$ git add.
$ git commit -m 'First Commit'
$ git push origin master
cloneしているのでremote設定はclone元に設定されている
ベアリポジトリからノンベアリポジトリにpullする
1.Googleドライブ上のベアリポジトリから実ファイル転送用ノンベアリポジトリへpullしてみる
$ cd g:\マイドライブ\Project\<ディレクトリ名> #ベアリポジトリからノンベアcloneすると.gitがつかないディレクトリができる
$ git pull origin master
ローカルマシン側からpushしたファイルが転送できていれば成功
ベアリポジトリからノンベアリポジトリへ自動転送設定
1.ベアリポジトリにノンベアリポジトリへのリモート設定をする
$ cd g:\マイドライブ\Project\<ディレクトリ名>.git
$ git remote add origin g:\マイドライブ\Project\<ディレクトリ名>
いらないかもしれないけど、念の為に設定しておく
2.post-receiveを作成
ベアリポジトリの.git/hooksにpost-receiveを作成
cd .git/hooks
touch post-receive
post-receiveに下記コードを追加
#!/bin/sh
cd /c/Project/<ディレクトリ名> || exit
unset GIT_DIR
git pull origin master
コードの内容は、
・ローカルマシンからpushを受け取ると
・自動でノンベアリポジトリにカレントディレクトリを移動
・pullを実行する
3.post-receiveの実行権限を付与
$ chmod 755 post-receive
忘れずに。
ローカルマシンからpush
1.ローカルマシン側からpushする
$ cd /c/Project/<ディレクトリ名>
$ touch hogehoge.txt
$ git add.
$ git commit -m 'Second Commit'
$ git push origin master
自動的にノンベアリポジトリへ実ファイルが転送されていれば成功