まず、この質問を読んでいただきありがとうございます。
私は現在、どの Git ワークフローが自分の会社での Web サイト開発に最も適しているかを研究しています。ネット上にはさまざまなガイドがありますが、それらはほとんどが概念的なものです。私の実装方法が間違っている場合はお知らせください:
1. コンセプト
概念的には、開発、統合、ステージング、本番の 4 つの層があります。開発層はローカルに保存され、Git の助けを借りて統合が行われ、運用層は public_html に直接配置され、リリース前にサイトをプレビューするためのステージング層は、保護されたディレクトリ __dev/staging (またはさらに良いことに、__dev/[branch_name] ? )。
2. フォルダ構造 (ステージングおよびプロダクション層)
- ギット
- project.git (これは、この Web サイト プロジェクトのベア リポジトリです)
- public_html
- __dev (パスワードで保護されたディレクトリ)
- ステージング (これは、ステージング層として使用される public_html のコピーのようなものです)
- __dev (パスワードで保護されたディレクトリ)
3. ローカル コピー内の Git セットアップ (開発および統合層)
git remote add origin ssh://path_to_project.git
git branch staging
そうすれば、マスターとステージングの 2 つのブランチを開始できます。
私がする時
git push origin master
サイトのオンライン バージョンは、サイトに ssh 接続しなくても更新されるはずです。そして、私がするとき
git push origin [branchname]
__dev/[branchname] は自動的に更新されます。
上記のすべては、git フックを介して実行できます。ssh 接続とプルの代わりにこの自動化を行う理由は、開発を高速化するためです (そうでなければ、ftp よりも手間がかかる場合は、どうすればよいでしょうか? 同意しますか?)
4.フック
これは私がかなり混乱したところです。
私が念頭に置いていたのは、次の 2 つのフレーバーのいずれかでした。
を。クローンとコピー
サイトにプッシュすると、フックはベア リポジトリを一時ディレクトリに複製し、送信したブランチに応じて public_html または __dev/branch にコピーします。
b. リセットして引く
サイトにプッシュすると、フックは public_html または __dev/branch 内に .git ディレクトリが既に存在するかどうかを確認します
何も見つからない場合は、cd でそのディレクトリに移動し、git init を実行してから git pull を実行します。
見つかった場合は、そのディレクトリに cd し、git reset --head を実行してから git pull を実行します。
installatron または softaculous を使用したアプリのインストール
ときどき、installatron から Web アプリをインストールして、それを作業ベースとして使用したいことがあります。残念ながら、インストール後に git に自動的にプッシュするフックがないため、ssh に接続して次の操作を行う必要があります。
git add .
git commit -a -m "installed xxx app"
git push origin master
次に、ローカル リポジトリにプルします。
結論と質問
私が考えていたワークフローについてどう思いますか? 改善する必要がある場所はありますか?枝の配置は大丈夫ですか?4.a. どちらのフレーバーが良いですか? または4.b.、または別のものがありますか?
ありがとうございました。