ベア リモート リポジトリを使用して Web サイトの更新を自動的に展開するための 2 つの一般的な方法を見つけました。
1 つ目は、レポを Web サーバーのドキュメント ルートに複製し、更新後のフックでgit pullを使用する必要があります。
cd /srv/www/siteA/ || exit
unset GIT_DIR
git pull hub master
2 番目のアプローチは、「切り離された作業ツリー」をベア リポジトリに追加します。post-receive フックはgit checkout -fを使用して、リポジトリの HEAD を Web サーバーのドキュメント ルートである作業ディレクトリに複製します。
GIT_WORK_TREE=/srv/www/siteA/ git checkout -f
最初のアプローチには、Web サイトの作業ディレクトリで行われた変更をコミットしてベア リポジトリにプッシュできるという利点があります (ただし、ライブ サーバーではファイルを更新しないでください)。2 番目のアプローチには、git ディレクトリがドキュメント ルート内にないという利点がありますが、これは htaccess を使用して簡単に解決できます。
ベスト プラクティスに関して、ある方法が他の方法よりも客観的に優れているか? 私が見逃している他の利点と欠点は何ですか?