2011-01-24 100 views
5

我對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時,沒有任何錯誤或回聲聲明。我想我錯過了什麼?謝謝。

+1

我想你想`git fetch`而不是`git pull`,因爲pull會嘗試將新傳入的頭合併到新的本地頭上,而只能獲取新的更改。 – Rudi 2011-01-25 08:24:10

+0

@Rudi你可以擴展一下,也許有一些例子嗎?我一直在使用git pull,它似乎以我想要的方式工作 - 我們推動我們的更改,並且公共站點會自動更新 - 但我仍然沒有以任何形式使用git fetch或git分支,所以我對所涉及的問題沒有很好的理解。我是一個兩人團隊的一員,我們基本上使用git,比如迄今爲止的無分支svn-hook,並且對這個工作流程感到滿意,但是我對git更加開放和有興趣,但我仍然沒有真正理解詞彙。謝謝。 – Dane 2011-01-27 19:39:32

回答

4

第一:git log不是git二進制文件的日誌。 :)它用於查看提交及其修訂。

您是否在某處看到「hi git」和「done」輸出?我的猜測是你的鉤子不可執行。運行chmod +x your_hook - 這將使其可執行。