2011-01-06 5 views
4

私はリモートリポジトリにプッシュするたびに更新したいウェブサイトを持っています。私はsvnの背景から来て、まだgitを把握しようとしています。Git:リモートリポジトリにプッシュするときにウェブサイトを更新しますか?

  • セットアップウェブサイトを含む、私のローカルマシン上のGitリポジトリ:

    は今のところ、私は次のように行われています。

  • 私のWebサーバーに(裸の)リポジトリをクローンしました。

今私はちょっと立ち往生しています。私はサーバ上の裸のリポジトリに変更をプッシュすることができますが、自分のwwwディレクトリ内のリポジトリの作業コピーをチェックアウトし、ローカルリポジトリをサーバにプッシュするたびに自動的に更新する方法はわかりません。おそらくフックスクリプトが必要でしょうか?

関連の質問Deploy PHP using Gitは部分的に私の質問に答えるが、スクリプトが実際に何をしているのか知りたい。

+0

は、あなたのサーバー上の裸のものの代わりに通常のリポジトリを保つ?それから直接プッシュ/サーブするのですか? – Dogbert

+0

@Adam:最初に試しましたが、次にgit push web-serverというプッシュしようとしましたが、このエラーが発生しました:remote:error:デフォルトでは、非ベアリポジトリの現在のブランチを更新することは拒否されます。インデックスと作業ツリーが矛盾するようにします –

答えて

6

これは私のために働いた、それはあなたのために働くかもしれない: A web-focused Git workflow

+0

+1すっきりした解決策ですが、2つのリポジトリが関係するため、ホストに情報を2回格納する必要があるということだけを言及しておきます。私はこれがトレードオフであることを知っている、ちょうど言っている:) – ralphtheninja

3

を、私はそれは基本的に裸のリポジトリから始まり、変更Caius Theory Website

で私のために非常に良い(とエレガントな)解決策を見つけましたworktreeをweb-serverフォルダに追加します。その後、ポスト受信フックを使用して、受信するたびに作業ツリーを更新します。エレガントで簡単な手順に従ってください!

ln -s /home/caius/git/somesite.git/ /home/caius/vhosts/somesite.com/htdocs/.git 

私はウェブ上で別のブランチをチェックアウトすることができますこの方法:私は戻ってgitリポジトリの場所にウェブサイト上の場所からソフトリンク「.git」ディレクトリを追加したことを記事にセットアップに追加

それにログインし、ウェブサイトフォルダの "git checkout"を使用して、サーバーを作成します。

hereからPython-Script "ygit-push-all.py"を少し修正して、複数のマシンをアップデートして、すべて同じ設定ファイルを使って同じフレームワークコードを実行するようにしました。サーバーごとにブランチをセットアップすることもできます(デモ/開発など)。また

私は私のグローバルGitの設定ファイルに次のエイリアスを追加しました:

[alias] 
    push-all = !ygit-push-all.py 
    check-all = !sh -c 'git branch -r -v | grep master | awk \"{ print \\$1, \\$2 }\"' 

をGitのプッシュすべてすべて私の遠隔地

Gitのチェックすべて意志を更新します私にすべてのリモコンがマスター支店がある

関連する問題