📜

Google drive上でファイルをgit管理しつつ他の人に共有する【windows11, git lfs】

2023/06/11に公開

概要

google driveで人に共有しつつgitでバージョン管理するみたいなことがやりたくて試してみました

かなり無理やりなのであんまり真似しない方がよさそう

対象ケース

  • チームではバージョン管理ツールを使っていない
  • 他メンバーへGoogle Driveのデータを共有することがある
  • 共有するデータを他の人が見れるようにしつつバージョン管理したい

使用ツール

手順

① Google Drive側でgitリポジトリを作る

まずgitで任意のディレクトリをリモートリポジトリにしていきます

  1. パソコン版Google Driveをインストール
    • 完了後、エクスプローラーで下記を確認できる
  2. git をインストール
  3. git lfsをインストール(※power shell上の作業)
    • git lfs install
  4. Google Driveに「任意のディレクトリ.git」を作成
  5. Google Driveの「任意のディレクトリ.git」に移動(※power shell上の作業)
    • cd 'G:\共有ドライブ\任意のディレクトリ.git'
  6. git プロジェクトを初期化(※power shell上の作業)
    • git init --bare --shared
      • 更新情報を管理する共通のgitリポジトリを作るよ というコマンド

②ローカルにcloneしてファイルをプッシュする

  1. ①で作ったリポジトリをPC上にクローン(※power shell上の作業)
    • git clone 'G:\共有ドライブ\バージョン管理したいディレクトリ'
    • git上ではまだ何も保存されていないので空のディレクトリが作られます
      20230610.png)
  2. クローンしたディレクトリでgit lfsを設定する(※power shell上の作業)
    • git lfs track *
    • ディレクトリの全ファイルを指定したけどこれでいいのかはわかりません!
      • 本当は拡張子ごとに設定した方がいいかも
        • 例: git lfs *.ma *.blend
  3. クローンしたディレクトリにバージョン管理したいデータを入れてpushする
    1. git add .
    2. git commit -m 'init' initの部分はなんでもいいです
    3. git push origin master

とりあえずここまででdrive上にgitのremoteリポジトリを作成してバージョン管理できるようにはなりました。ここまでだけならgithub使えばよいのであんまり意味ありません😅

③ 他の人がデータを直に確認できるようのディレクトリを作る

この辺が無理やりやってるところです

  1. ②で作ったリモートリポジトリに実ファイルは保存されていません。なので他の人が実データを確認できるようにDrive上にもう一つディレクトリを作ってそこに②で作ったリポジトリをcloneしてきます
  2. ディレクトリ構成的にこうです
  •  Google Drive
        ┣ ①で作ったリモートリポジトリ xxx.git
        ┗ ③で作る共有用のディレクトリ
    
  1. 共有ディレクトリも都度更新する必要があるのでローカルの作業ディレクトリの.git/hooks/post-commit に下記を追記します
      # masterにcommit時、pushして共有ブランチも更新
      branchName=$(git rev-parse --abbrev-ref HEAD)
      if [ "$branchName" = "master" ]; then
        git push origin master
        cd 'G:\共有ドライブ\共有用のディレクトリ'
        git checkout master
        git --git-dir='.git' pull origin master -f
      fi
    
  • ↑は下記のように動作します
    1. 作業ブランチ(ローカル)でmasterにcommitする
    2. 自動でリモートリポジトリにpush
    3. 共有ディレクトリ(drive)のmasterブランチを最新化

所感

  • これやんなくてもgithubで管理しつつ普通にドライブにデータ入れるだけでよさそう
  • あくまで個人で更新履歴を残していきたいための対応なので、チームでバージョン管理したい場合は別の方法を強くお勧めします

参考

Discussion