![ライブデプロイメント Web サーバーからの変更を Git リポジトリにプッシュする方法](https://rvso.com/image/1421702/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%83%A1%E3%83%B3%E3%83%88%20Web%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%8B%E3%82%89%E3%81%AE%E5%A4%89%E6%9B%B4%E3%82%92%20Git%20%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AB%E3%83%97%E3%83%83%E3%82%B7%E3%83%A5%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
私は、開発者がライブ デプロイメント Web サーバー上のスクリプト ファイルとイメージ ファイルを直接操作する環境で作業しています。これは恐ろしいことであり、いくつかの問題が発生していますが、これまでのところ驚くほど少ないです。これらの変更にはソース コントロールはまったく使用されず、変更はライブ サーバー上でのみ行われます。ライブ Web サーバーに自分の変更をデプロイするときに、他の開発者がライブ Web サーバー上で行った変更が保持/マージされるようにする方法がわかりません。この問題は、ソース コントロールを使用すると状況を改善するのではなく、悪化させるようです。
私は個人的に git と svn サーバーをセットアップし、過去数年間、多くのデスクトップ アプリやモバイル アプリ プロジェクトで git と svn によるバージョン管理を使用してきました。しかし、これで困惑しています。
答え1
ベストプラクティスは、デプロイ方法の一部として git を使用することです。そのため、git のその他の使用法に関する回答は比較的少ないでしょう。
とはいえ、git はさまざまな方法で使用できます。git からではなくライブ サーバーにデプロイする場合でも、git に変更をコミットすることには価値があります。そうすれば、少なくともいつ何が変更されたかを確認し、ロールバックすることができます。失われるのは、適切なコメントとコミットへの変更のグループ化です。これにより、どこにロールバックするかをすばやく確認でき、異なるファイル内のどの変更が相互に依存している可能性があるかを確認できます。
ライブ コードを Git 作業ディレクトリにすることも完全に可能であり、リポジトリの自動更新を cron から定期的に実行することもできます。
etckeeper(https://github.com/joeyh/etckeeper) は、いくつかの点で比較できます。Web サイトではなく、サーバーの /etc ディレクトリの変更を記録するように設計されていますが、それ以外はあなたが考えているものと非常に似ています。コミット フックなどに便利なアイデアがいくつか組み込まれている可能性がありますが、複数の異なる VCS システムをカバーし、複数のオペレーティング システムと互換性があるため、複雑でもあります。