2011-01-24 71 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 - 这将使其可执行。