ローカルのみでgit管理する方法を記します。
用意するフォルダ (./project下)
・project/www_dev
=開発用フォルダ
・project/remote/non-bare
=ノンベアリポジトリ用フォルダ(リモートリポジトリ)
・project/remote/bare/www.git
=ベアリポジトリ用フォルダ(リモートの履歴管理等用)
ローカルフォルダ(project/www_dev)
echo 'test' > index.html
適当にファイルを作成。
ローカル(開発用)にリポジトリを作成します。
$git init $git add . $git commit -m 'first commit'
bareフォルダ(project/remote/bare/www.git)
ベアリポジトリを作成します。
git init --bare --shared
ローカルからリモートリポジトリ(bare)の追加
project/www_devへ移動します。
開発フォルダにベアリポジトリを登録します。
git remote add main パス/bare/www.git
登録できたか git remote -v で確認しましょう。
実際にローカルからリモートリポジトリに向けてpushをしましょう。
non-bareフォルダ(project/remote/non-bare)
ベアリポジトリをcloneしましょう。
git clone ../bare/www.git
ノンベアリポジトリ内に
ローカルリポジトリからのpushされたデータが作られました。
流れ
ローカルで編集後、ベアリポジトリに向けてpush.
push後、ノンベアリポジトリ(リモートリポジトリ)に入り
pullしましょう。
これで、ローカルリポジトリの内容が
リモートリポジトリに反映されました。
リモートリポジトリで
fetch,merge or pull するのが少々面倒ですが、最小構成で完成しました。
ベアリポジトリからノンベアリポジトリへの反映は
きっと自動化できると思うのでぜひ、自動化してみてください。
フックを使った簡単な自動化
ベアリポジトリ > hooks > post-receive (なければ作成)
post-receiveは拡張子なしです。
#!/bin/sh cd 絶対パス/remote/non-bare/www git --git-dir=.git pull
以上です。
参考
https://qiita.com/devzooiiooz/items/56a02342d9d65d79f6c3https://qiita.com/KTakata/items/baa96574ce391775a212
自動化する方法
コメント