好的,看看这个。我有一个安装了 git 的 mac osx 服务器。我们用它来合作项目。我们想要的是能够推送到服务器上的非裸存储库,以便我们可以查看其上的网站。问题是,一个非裸存储库的用户已签出主节点,因此无法推送到主节点。
我发现工作的唯一方法是推送到另一个分支,然后将其合并到主分支中,这既耗时又无聊。
那么,有没有办法推送到远程服务器上的master分支,并且能够在服务器上查看网页呢?
处理此问题的一种常见方法是拥有一个带有挂钩的裸存储库,该挂钩将检出HEAD
到正确的目录,如此处所述。本质上,您将创建一个post-receive
钩子来执行以下操作:
GIT_WORK_TREE=/var/www/whatever git checkout -f
然后,您只需推送到该裸存储库即可进行部署。与推送到非裸存储库相比,这种方法的优势在于您最终不会得到一个.git
目录/var/www/whatever
,而只是项目中的文件。