私はgitとunixの両方に慣れています。私はec2でセットアップしたリポジトリに単純なgit post-receiveフックを作成しようとしています。 hooksフォルダには、公開サイトの作業ディレクトリを更新しようとするpost-receiveという名前のファイルがあります。基本的なgitフックを理解する
#!/bin/sh
echo 'hi git'
cd /home/www-data/web2py/applications/init
sudo git checkout .
sudo git pull
echo 'done'
しかし、プッシュ後、何も起こっていないようです。サイトの作業ディレクトリは更新されず、git logを実行するとエラーやエコーの兆候はありません。私は何かを欠いていると思いますか?ありがとう。
私はあなたが 'git pull'の代わりに' git fetch'をしたいと思っています。なぜなら、pullは入ってくるヘッドを新しいローカルヘッドにマージしようとし、フェッチは新しい変更だけを取得するからです。 – Rudi
@Rudiこれを拡張して、おそらくいくつかの例がありますか?私はgit pullを使用していましたが、それは私が望むように動作しているようです - 私たちは変更をプッシュし、パブリックサイトは自動的に更新されます - しかし、私はまだgit fetchまたはgit branchesを私は関係する問題をよく理解していません。私は2人のチームの一員で、基本的にブランチレスSVNのようなgitを使っています。このワークフローに満足していますが、gitの利点を生かすことに非常に興味があり、しかし、私はまだ語彙をつかまえていません。ありがとう。 – Dane
git pullはローカルの変更を新しく入ってくるものとマージしようとします。 Websideフォルダに誰かがコミットすることがない限り、これは問題ありません。しかし、誰かがそこにあるものをコミットすると、次のプルは入ってくる変更をローカルコミットとマージしようとします。競合のためにこのマージが失敗すると、フォルダは競合するファイルすべてに矛盾マーカーが付いた状態になります。これはおそらくあなたが望むものではありません。 – Rudi