私は現在、Git を介して Web サイトの展開をテストしていますが、次の点を理解するのに苦労しています。
現在、私は GIT_WORK_TREE を webroot に設定する post-receive フックを使用して、DEV 環境にベア リモート リポジトリを持っています。「git push DEV master」のような構文を使用して、ローカル リポジトリからそこにプッシュします。これはうまくいきます。ただし、DEV にプッシュする 'develop' ブランチもあり (受信後のフックは 'git checkout -f [BRANCH_NAME] に設定されています)、これもうまく機能します。
私の質問は次の状況です: DEV でバグを見つけた ('develop' ブランチからプッシュされた) としましょう。「git push DEV マスター」(マスター ブランチにはバグのない DEV への最後のプッシュがあり、現在 DEV での開発コミットの祖先です) を実行して、それを完了できるようにしたいと考えています。しかし、これを行うと、リモート リポジトリから「すべてが最新です!」と通知されます。それは理にかなっていると思いますが、私がやりたいのは、git に強制的に「マスター」ブランチからプッシュを取得させ、Web アセットを適切にデプロイするために必要な post-receive フックを起動させることです。
ssh のリモート リポジトリに直接アクセスして、そこから master をチェックアウトしようとしましたが、これを行うには作業ツリーが必要であることがわかりました (それはむき出しになっているためだと思います)。
これを行う正しい方法は何ですか?可能であれば、元に戻したりリベースしたりすることは避けたいのですが、それが唯一の方法かもしれません。