14

ubuntuサーバーにベアレポをセットアップしました。

裸の git リポジトリをサーバーにプッシュした後:

$ git push origin master

非ベア レポが workfiles という名前の実際の作業ディレクトリであることが示されているように、非ベア レポのコンテンツを最新のプッシュで更新したいと考えています。

$ cd /central/workfiles
$ git pull
$ exit

post-receive フックについて聞いたことがありますが、同じ設定方法がわかりません。どうすれば同じことを達成できますか。

4

3 に答える 3

13

CD に頼るよりも、作業ツリーと git ディレクトリを指定する方が好きです。

/bare/repo.git/hooks/post-receive

#!/bin/sh
GIT_WORK_TREE=/central/workfiles GIT_DIR=/central/workfiles/.git git pull origin master
exit

以下でChrisVがコメントしたように、 agit checkoutの代わりに a を使用することもできます。git pull

プルの一部であるマージは、手動の修正が必要な場合に物事を混乱させる可能性があるため、git checkout -fよりも安全だと思います。git pull

しかし、それは「裸で/central/workfilesない」git リポジトリではないことを意味します。ベア リポジトリのコンテンツをチェックアウトする単なるフォルダです/bare/repo.git。そのアプローチの例については、Brian Thomas回答
を 参照してください。

それはOP仕様に適合しません。

于 2013-01-22T07:39:30.427 に答える
7

私はこのようにポスト受信フックを使用します

#.git/hooks/post-receive

#!/bin/sh
GIT_WORK_TREE=/srv/http/sitedir/ git checkout -f

はい、必ず実行可能にしてください。

于 2014-06-04T02:05:20.320 に答える
3

私は次のようなもので行きます

#!/bin/sh

cd /central/workfiles
git pull
exit

上記のスクリプトを名前を付けて保存し、ベア リポジトリpost-receiveのディレクトリに配置します。hooks/

結論として、実行可能にすることを忘れないでください

chmod +x post-receive
于 2013-01-22T07:28:41.250 に答える