3

開発マシンにローカル git リポジトリがあります。

git を使用してコードを本番サーバーにプッシュしたいと考えています。コードがそこにプッシュされたら、Web サーバーの再起動をトリガーします。

これを行うコマンドは何ですか?私はデビアンを使用しています。

/var/www/example.com私のローカルリポジトリです

本番ホスト名はproduction.example.com、ssh + キーが既にセットアップされています。

4

2 に答える 2

4

通常、ライブ Web サイトにコードを直接プッシュすることはお勧めできません。このために、公開ディレクトリの外に、サーバー上にベア リポジトリを作成できます。このリポジトリは変更をライブ Web サイトのリポジトリにプッシュし、Web サイトの門番のようなものになります。セットアップするには、ライブ Web サイト ディレクトリの周りにリポジトリを作成します。

$ cd ~/www
$ git init
$ git add .
$ git commit -m"initial import of pre-existing web files"

これを作成したら、HTTP 経由でアクセスできないディレクトリに移動します。簡単にするために、このベア ディレクトリを HUB と呼び、Web サイト ディレクトリを LIVE と呼びましょう。ここでベア リポジトリを初期化します。

$ cd; mkdir site_hub.git; cd site_hub.git
$ git --bare init

次に、ライブ Web サイトの作業ディレクトリ内から、このベア リポジトリをリモートとして追加し、ライブ Web サイトのマスター ブランチをプッシュします。

$ cd ~/www
$ git remote add hub ~/site_hub.git
$ git remote show hub
* remote hub
  URL: /home/rizwan/site_hub.git
$ git push hub master

変更をライブ リポジトリにコミットするには、フックが必要です。post-updateHUB リポジトリ内にフックを作成します。

#!/bin/sh

echo
echo "**** Pulling changes into Live [Hub's post-update hook]"
echo

cd $HOME/www || exit
unset GIT_DIR
git pull hub master

exec git-update-server-info

このフック内に、プルの完了後にサーバーを再起動するコードを含めることができます。

また、post-commitLIVE リポジトリにフックを作成して、ライブ Web サイトに加えられた変更を HUB に送り返します。

#!/bin/sh

echo
echo "**** pushing changes to Hub [Live's post-commit hook]"
echo

git push hub

ローカル マシンで、HUB リポジトリをリモートとして追加し、変更をプッシュします。

git remote add hub <hub-repository-url>

これがどのように機能するかというと、いくつかのコードを記述してベア リポジトリにプッシュし、更新後のフックを使用して変更をライブ リポジトリにプッシュし、サーバーを再起動します。

于 2012-10-04T08:30:00.643 に答える
2
于 2012-10-04T07:24:42.523 に答える