无根文件夹的GIT post receive签出

无根文件夹的GIT post receive签出,git,Git,我是git新手,试图通过对web根目录进行签出来了解如何在每次推送时更新网站。 我搜索了stackoverflow,只找到了关于如何克隆的主题,这不是我想要的。 到目前为止,我已经设置了本地和远程回购,以及post接收挂钩: #!/bin/sh GIT_WORK_TREE=/path/to/website/httpdocs git checkout -f 我的问题是项目根文件夹包含在签出中。。。当我将内容推送到远程回购时,我最终得到的结果如下 /path/to/website/httpdocs

我是git新手,试图通过对web根目录进行签出来了解如何在每次推送时更新网站。 我搜索了stackoverflow,只找到了关于如何克隆的主题,这不是我想要的。 到目前为止,我已经设置了本地和远程回购,以及post接收挂钩:

#!/bin/sh
GIT_WORK_TREE=/path/to/website/httpdocs git checkout -f
我的问题是项目根文件夹包含在签出中。。。当我将内容推送到远程回购时,我最终得到的结果如下

/path/to/website/httpdocs/project_root/index.php
我想要达到的是拥有

/path/to/website/httpdocs/index.php
签出时如何省略项目根文件夹?

如果:

  • /path/to/website/httpdocs是一种git回购协议
  • /path/to/project\u root是一个git repo(即有一个
    .git
    目录)
然后,您可以在
post receive
hook中使用:

git --git-dir=/path/to/project_root/.git --work-tree=/path/to/website/httpdocs checkout -f
但是,如果您要推到
project\u root
,它相当于一个裸repo,在这种情况下,它的根目录应该称为
/project\u root.git
,并且
post receive
钩子看起来像:

git --git-dir=/path/to/project_root.git --work-tree=/path/to/website/httpdocs checkout -f
在任何情况下,
project\u root
必须是git回购的根


委员会:


问题似乎是由EclipseGit插件(EGit)引起的,它会自动创建一个带有项目名称的根文件夹。
我现在通过将
/path/to/website/httpdocs
/path/to/website/httpdocs/project\u root
的路径更改为
/path/to/website/httpdocs/project\u root来解决这个问题


回购协议位于
path/to/website/git/myrepo.git
我正在从本地回购协议推到这里,但我想签出到
path/to/website/httpdocs
(这不是回购协议)@choppingblock,然后我提到的第二个post-receive-hook就可以做到这一点。结果问题出在其他地方(见对问题的评论)。既然你的答案是正确的,我就把它设为“接受”。@chopingblock ok。我在答案中添加了您的评论以提高可视性。问题似乎是由EclipseGit插件(egit)引起的,它会自动创建一个带有项目名称的根文件夹。我现在通过将webroot的路径从
/path/to/website/httpdocs
更改为
/path/to/website/httpdocs/project\u root