2015-02-23 40 views
1

我希望我的混帐回购协议是从我的工作目录中一个单独的目录,所以我用下面的命令做了回购:不能反映git的工作目录更改

$ cd mysite.git/ 
$ git init --bare 
Initialized empty Git repository in /home/git/mysite.git 
$ git config core.bare false 
$ git config core.worktree /home/mysite/public_html 
$ git config receive.denycurrentbranch ignore 
$ cat > hooks/post-receive 
#!/bin/sh 
export GIT_DIR=/home/git/mysite.git 
export GIT_WORK_TREE=/home/mysite/public_html 
git checkout -f 
^D 
$ chmod +x hooks/post-receive 

我似乎能够推动和从回购没有错误,但工作目录并不反映推送的变化。

如果我做

$ git status 

它表明我的变化COMMITED,但后来从工作目录中删除。

这个配置直到最近都在为我的团队工作,而且我不确定如何追查可能发生的变化。我确定文件权限似乎是正确的。我不知道还有什么要检查。

有人能帮我找出为什么我的配置导致工作目录不能反映提交的更改吗?

回答

1

事实证明,我的repo目录中的权限是正确的,但我的工作目录中的权限不是。我必须确保工作目录可以被推送的用户写入。

0

“裸”回购没有工作区。也许this会有帮助?

您需要'克隆'裸回购。然后你可以从克隆推入裸仓库,并从裸仓库拖入克隆。

+0

我试图在http://caiustheory.com/automatically-deploying-website-from-remote-git-repository/ 通过类似的建议远程混帐回购协议,以建立一个网站的自动部署 是它如果不将初始化仓库初始化为裸露,可以将git仓库放在与工作目录不同的目录中?我还需要推送到回购站来自动提交更改并更新工作目录。 – phaonica 2015-02-24 00:22:38

+0

推入回购并不会改变任何工作目录。但是你可以做你想要的一部分。要将git-dir从工作树中分离出来,请使用'--separate-git-dir '。 – cdunn2001 2015-02-24 01:50:13