在EC2 AWS实例中,我创建了一个远程裸git存储库:
@server:~$ mkdir -p /home/myuser/domain.git && chmod 770 /home/myuser/domain.git && cd /home/myuser/domain.git && git init --bare
使用post-receive hook:
@server:~$ nano hooks/post-receive
钩子脚本是:
#!/bin/sh
sudo git --work-tree=/var/www/domain --git-dir=/home/myuser/domain.git checkout -f
它有权执行:
@server:~$ chmod +x hooks/post-receive
我在以下的当地代表处工作:
@local:~$
git init
git remote add server server:/home/myuser/domain.git
git checkout -b www-dev
git add .
git commit -am "Initial"
但是,当我推动更改时:
@local:~$ git push server www-dev
钩子失败了:
remote: fatal: You are on a branch yet to be born
To server:/home/myuser/domain.git
06709ae..d1d7ead www-dev -> www-dev
该网站未更新。为什么?
我怀疑问题是由根调用git checkout -f
引起的。但只有root才能写入 / var / www / domain 。
答案 0 :(得分:0)
尴尬的解决方案,你必须首先推动主分支:
@local:~$
git init
git remote add server server:/home/myuser/domain.git
git add .
git commit -am "Initial"
git checkout -b www-dev
git push server master
之后你可以结账到另一家分店:
@local:~$ git checkout -b www-dev
但是还有另一个问题:它只部署master
分支。可以找到此问题的解决方案here。