首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用git维护网站

使用git维护网站
EN

Stack Overflow用户
提问于 2012-03-20 02:30:21
回答 1查看 606关注 0票数 0

到今天为止,我一直以以下方式使用git:

  • 是我的www服务器上的主回购/路径/www,作为文档根
  • ,是PC

上的一个克隆。

我通常会在PC上做很大的修改,然后推到服务器上。在这样做后,我不得不"git重置头“和"git结账”。在服务器上。有时候,我会在服务器上做一些小小的改动,然后把它拉回PC上。这一切都很好,直到今天,在推的时候,吉特抱怨

代码语言:javascript
复制
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回购之后,我现在可以像以前一样推送并在文档根目录中上传和更新更改。我对此有几个问题:

  • 说明工作树没有.git元数据。真的是这样吗?我尝试删除它的.git目录,但是"git状态“不再起作用。将GIT_DIR设置为/path/www.git无助于git,因为git说回购(在/path/www.git上的裸露一个)实际上不是回购。
  • 如果我更新index.html并在PC上添加somefile.html并按下这些更改,这些文件将被更新/添加到服务器的文档根目录中。但是,如果我在doc根目录中使用"git状态“,它会告诉我index.html已经更改,somefile.html是一个未跟踪的文件。我天真地期望“结帐-f”会更新工作树,使之与我从PC上所做的完全一致。我能做到吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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状态?限制你自己在你的电脑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9780639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档