私のWebサイトには、ベアリポジトリ(プッシュ先)と、ドキュメントルートとして機能する作業ディレクトリを持つクローンがあります。
post-receive
裸のリポジトリで、Web サイトを自動更新するフックをセットアップしました。
#!/bin/sh
WEB_DIR=/var/www/www.mysite.com
# remove any untracked files and directories
git --work-tree=${WEB_DIR} clean -fd
# force checkout of the latest deploy
git --work-tree=${WEB_DIR} checkout --force
残念ながら、ベア リポジトリにプッシュした後、変更はドキュメントルートに表示されますが、ステージングされていない変更として表示されます。git checkout -- <files>
次に、 a の後に aを実行して、すべてをクリーンアップする必要がありgit pull
ます。
明らかに、これはそのままで機能するという考えです。クリーンアップとプルを手動で行う必要がある場合は、post-receive
フックを削除することもできます。
さまざまな場所でプルするよりも、ポストレシーブでチェックアウトを使用する方が良いと読んだので、それが良い変更になるかどうかはわかりません...
私は git の専門家ではないので、誰かが私に欠けているものを教えてくれることを願っていますか? 解決策は、いくつかのチュートリアルで見つけたので、多くの人にとってうまくいくようです。