2

我是 git 新手,试图通过对 web 根目录进行结帐来弄清楚如何在每次推送时更新网站。我搜索了stackoverflow,只找到了关于如何克隆的主题,这不是我想要的。到目前为止,我已经设置了我的本地和远程存储库,以及一个接收后挂钩:

#!/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

签出时如何省略项目根文件夹?

4

1 回答 1

1

如果:

  • /path/to/website/httpdocs 是一个 git repo
  • /path/to/project_root 是一个git repo(即有一个.git目录)

然后你可以在你的post-receive钩子中使用:

git --git-dir=/path/to/project_root/.git --work-tree=/path/to/website/httpdocs checkout -f

但是,如果您要推送到project_root,它只是一个仓库,在这种情况下,应该调用它的根目录/project_root.git,并且post-receive钩子看起来像:

git --git-dir=/path/to/project_root.git --work-tree=/path/to/website/httpdocs checkout -f

无论如何,project_root必须是 git repo 的根目录。


OP 砧板评论

看来问题是由eclipse git插件(EGit)引起的,它会自动创建一个带有项目名称的根文件夹。
我现在通过将路径更改为webrootfrom/path/to/website/httpdocs来解决它/path/to/website/httpdocs/project_root

于 2013-04-10T15:30:03.617 回答