2009-09-01 8 views
3

私は基本的なやり方とワークフローの仕組みを理解しています。しかし、私のLinuxワークステーションにローカルリポジトリがあるとしましょう。現在、リモートDCのVPSにプロダクションボックスがあります。新しいコードをプロダクションボックスに送りたい場合は、どうすればよいでしょうか?私は箱にGitのレポを持っていたくない、それはちょうど私のWebコード(php/mysql)を持っているはずです。GitのようなVCSの使用についての説明

すべてのファイルを送信することなく、新しい変更をプロダクションボックスにどのように送り出すのですか?

+0

GitはVCSではなくDVCSです。これはVCSとの基本的な違いの1つです。 –

+0

Gitエクスポートのための複製:http://stackoverflow.com/questions/160608/how-to-do-a-git-export-like-svn-export –

答えて

4

ウェブコンテンツを管理する1つの方法は、プロダクションボックスに「裸の」リポジトリを作成することです。これは作業コピーを持たないリポジトリです。新しいコードをデプロイする場合は、このリポジトリにプッシュして更新します。次に、生産ボックスにログインして、を裸のレポジトリから実際のデプロイメントディレクトリ(Gitリポジトリでもある)にプルします。

生産ボックスのこれらのリポジトリのどちらも「マスター」リポジトリとみなす必要がないことに注意してください。ソースコードを他の場所に置いて、必要に応じてプロダクションにプッシュするだけです。

2つのリポジトリが必要な理由は、Gitは作業コピーを持つリポジトリに直接プッシュすることをサポートしていないからです。 Gitはこれまで歴史的にこれを行うことができましたが(意図しない結果がしばしばあります)、新しいバージョンではこのようなことを避けることを強く推奨しています。

私は上記の手法を使っていくつかのWebサイトを管理していますが、実際にはうまく機能します。一つの利点は、私が本当に必要な場合は、プロダクションマシンに何かをパッチして、そこにコミットし、その後、その変更を自分の開発リポジトリにプルできることです。この方法で行われた変更は、誤って失われる可能性は非常に低くなります。

+0

これで、ポートを開く必要はありませんメインのレポが正しい私のローカルワークステーション?私は地元からssh経由でプロダクションの "裸の"レポにプッシュし、VPSでプロダクションにログインし、プルフォームを "裸の"レポを実行します。 – luckytaxi

+0

それはまさに正しいことです。 –

1

リポジトリがどのように機能しているのか誤解している可能性があります。リポジトリはどこでも好きかもしれません。実際には問題ではなく、githubやVPSでもかまいません。基本は、作業中はコミットを行います(gitはローカルリポジトリに作成されます)。変更を適用する準備ができたら、それを「プッシュ」します。これによってデルタが送信されますコード)。

プロダクションボックスに変更を反映させる準備ができたら、サーバーにログインして、リポジトリから変更を引き出し、デプロイします(データベースの再起動または移行が含まれます)。これは通常、レシピとして)

+0

私はそれを得た、私はちょうどHEADにあったものを模倣するために生産を得る方法を理解するのに役立つ必要があった。ファイアウォールのポートを開けたくないので、ローカルのワークステーションからデルタを取得できます。 – luckytaxi

関連する問題