到今天为止,我一直以以下方式使用git:
上的一个克隆。
我通常会在PC上做很大的修改,然后推到服务器上。在这样做后,我不得不"git重置头“和"git结账”。在服务器上。有时候,我会在服务器上做一些小小的改动,然后把它拉回PC上。这一切都很好,直到今天,在推的时候,吉特抱怨
remote: error: refusing to update checked out branch: refs/heads/master
etc. 为什么在6-12个月之后,这一切都会失败呢?
在找到http://toroid.org/ams/git-website-howto后,由于一个StackOverflow问题,我复制了/path/www到/path/www.git,并将它变成了一个“裸”回购。文档根目录保留在/path/www。我添加了一个.GIT/hooks/post-接收脚本,其中包含"GIT_WORK_TREE=/path/www checkout -f“。
在修改了PC上的配置以指向www.git回购之后,我现在可以像以前一样推送并在文档根目录中上传和更新更改。我对此有几个问题:
发布于 2012-03-20 07:55:49
-- howto意味着工作树没有.git元数据。真的是这样吗?
是。你有一个简单的回购设置,要真正获得你的网站的文件,你“暂时”分配一个工作目录给裸回购,并检查它到你想要的网站路径。这就是GIT_WORK_TREE=/path/www checkout -f所做的。在您移到裸回购之前,存在的.git将是您先前设置的一个工件。
,但是如果我在文档根目录中使用"git状态“,它会告诉我index.html已经更改,somefile.html是一个未跟踪的文件。
同样,这似乎是来自您之前设置的.git存在的效果。删除/var/www/.git
我天真地期望“结帐-f”会更新工作树,使之与我从PC上所做的完全一致。
你的期望是对的,它应该是这样运作的。删除上面提到的.git。
要实际执行git状态,请转到/var/www.git并执行GIT_WORK_TREE=/var/www git status
PS:您为什么在服务器上做这么多更改和git状态?限制你自己在你的电脑。
https://stackoverflow.com/questions/9780639
复制相似问题