サーバーにむき出しのgitリポジトリをセットアップするにはどうすればよいですか?
-
22-10-2019 - |
質問
私は友人とまともな開発パターンをセットアップしようとしています。計画は、私たちが独自のコンピューターで独立した開発を行い、次にテストのために開発サーバーにプッシュしてから、開発サーバーから生産サーバー(Heroku)にプッシュすることです。
問題は、Gitを動作させることができないことです。おそらく、私は何が起こっているのかを根本的に理解するのに十分なわけではありません。 Devサーバーにリポジトリを設定しましたが、パソコンにクローンを作成すると、非ベアリポジトリにプッシュすることに不満を言うため、「プッシュ」することはできません。それで、私はレポを分岐してブランチを押すことを試みましたが、今では多くの早速な声明を受け取っています。私もそれらが欲しいとは思いません。
だから私の質問はこれです。すべてが「機能する」ようにサーバーをセットアップするにはどうすればよいですか?サーバーは裸のリポジトリになることはできません。アプリをテストできるように、コードが入っている必要があります。私たちは、リポジトリから独自の開発コンピューターにスムーズにプッシュアンドプープできるようにしたいと考えています。そして、サーバーはHerokuにプッシュできる必要があります(すでにこれを行うことができます)。これは私自身のサーバーにあるので、これを機能させるために必要なものは何でも完全にアクセスできます。 (Ubuntu Server Edition 11.04)。
ありがとう!
解決
デフォルトで非むき出しのリポジトリにプッシュできない理由は、非ベアリポジトリがそれに関連付けられたチェックアウトワーキングコピーを持っているためです。チェックアウトされたブランチへの更新をプッシュすると、作業コピーは、特に更新するコマンドを実行しない限り、独自のリポジトリと同期しなくなります(レシーブ後のフックを使用して実行できます)。これを知っていて、とにかく非むき出しのリポジトリにプッシュしたい場合は、 receive.denyCurrentBranch
構成プロパティへ ignore
そしてGitはプッシュを許可します。詳細については、aを参照してください ブログ投稿 私は少し前に(おそらくアップデートが予定されている)、自分のウェブサイトに使用する同様のセットアップを説明することを書きました。
開発と生産サーバーのみ(それぞれ独自の非ベアリポジトリを備えた)の代わりに、3番目のリポジトリ、裸のリポジトリもあります。そうすれば、私は1つの場所から開発サーバーにプッシュするだけで、物事を同期させるのに役立ちます。
他のヒント
@david zaslavskyのコメントを説明するために、ほとんどの場合プッシュするために裸のレポをセットアップし、次のようなものを使用します gitdeploy 開発サーバーにプッシュします。 Herokuなしでは、Herokuに押し込むのと同じセマンティクスが得られます。