リモートリポジトリっぽいことをする
GitHubを使わずにいい感じにバージョン管理しながらリモートに置いておきたいときのテクニック。
Google Drive と WSL2 をいい感じに組み合わせてできたのと、Gitの仕組みの勉強にもなったので備忘録
先に断っておくと、ここで紹介するのは一人で管理する用の手順です。
同様の手順でGoogle Driveの共有ドライブを使えば複数人の作業も可能だとは思います。
パソコン版ドライブ
Google Driveを開き、右上の歯車から「パソコン版ドライブをダウンロード」を押してポチポチダウンロード。
ダウンロード後、自分のGoogleアカウントでログイン。
これで G:\
としてマウントされて、以下のように表示されるはず。
WSL2
まず、G:\
をマウントしたい。
これはやらなくてもマウントされてることもあったし、されてないこともあった。
WSLから /mnt/g
を ls
してみて、中身が空ならやる必要がある。
マウントポイントを作成して、WSLにログイン中のユーザでマウント。
rootのままマウントしてると後でエラーになる。
sudo mkdir /mnt/g sudo mount -t drvfs -o uid=`id -u`,gid=`id -g`,username=`whoami` G: /mnt/g
再起動とか、何かしらのはずみでマウントが解除されたりしたら mount
のコマンドだけ都度やる必要がある。
そしたら、リモート用のgitディレクトリを作成。
ベアリポジトリという概念を初めて知った。 git init
のオプションでいい感じに作れるらしい。
(複数人で共有したいときは マイドライブ
部分を 共有ドライブ
とかにすれば同じことができるはず。)
mkdir -p /mnt/g/マイドライブ/DriveHub/repo.git cd /mnt/g/マイドライブ/DriveHub/repo.git/ git init --bare --shared git branch -m main
これでリモート用のgitディレクトリの準備が完了。
試しにクローンしていつものコマンド群。
git clone /mnt/g/マイドライブ/DriveHub/repo.git cd repo/ echo "#repo" > README.md git add README.md git commit -m "init" git push origin main
push
した際、 /mnt/g/マイドライブ/DriveHub/repo.git
の変更が Google Drive アプリを通じて同期されるまで待たないと行けないのが玉に瑕。
共有
別のPCでパソコン版ドライブをダウンロードし、同一のアカウントでログイン。
/wsl/g
が生えてない場合は、さっきの手順でWSLからマウント。
ベアリポジトリは既に /mnt/g/マイドライブ/DriveHub/repo.git
にあるので、それを clone
だけすれば良い。
$ git clone /mnt/g/マイドライブ/DriveHub/repo.git/ Cloning into 'repo'... done. fatal: 'refs/remotes/origin/desktop.ini' has a null OID
と、ここでエラー。desktop.ini
さんがエラーを起こしてる。。。
ベアリポジトリに cd
して desktop.ini
を再帰的に削除。
cd /mnt/g/マイドライブ/DriveHub/repo.git/ find . -name 'desktop.ini' -exec rm -f {} \;
もう一回 clone
したらいけた。
$ git clone /mnt/g/マイドライブ/DriveHub/repo.git/ Cloning into 'repo'... done.
これでGoogle Driveを利用してリモートリポジトリっぽい感じにできた。