git工作树不是存储库

时间:2014-09-27 18:41:59

标签: git githooks

我正在尝试为实时网络服务器设置远程仓库。我被教导如何设置它的方法是在钩子目录中创建一个post-receive文件,如下所示:

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

这样实时网络文件夹中没有git文件夹。

但是,如果我将文件添加到工作树中,我就无法将这些文件添加到我的git repo中。它说:致命:不是git存储库(或任何父装载父级)。

我意识到这可能不是一个好主意,但我喜欢我的托管服务有一个点击安装选项,这使得设置WordPress变得容易。

有没有办法将这些文件添加到git中?

3 个答案:

答案 0 :(得分:0)

使用选项--work-tree--git-dir(如--work-tree=/var/www/domain.com --git-dir=/var/repo/site.git中)的任何命令都会检测/添加或提交这些文件。

例如:

git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git status

这将检测/var/www/domain.com工作树中的任何修改,基于裸仓[{1}}。

答案 1 :(得分:0)

如Von建议的那样通过命令行传入,或者如果你要在该存储库中进行大量操作,请设置环境变量GIT_DIR和GIT_WORK_TREE以节省一些输入。

答案 2 :(得分:0)

git version 2.17.1开始,工作树文件夹包含一个小的.git文件,该文件包含:

gitdir: /path-to-parent/.git/worktrees/this-tree-name

请注意,在此示例中,指定了绝对路径。如果此路径由于某种原因无效(也许您移动了文件夹),则会收到错误消息:

致命:不是git存储库

实验上,我确定这可能是相对路径,这可能不太容易出错。

无论如何,此错误消息的通用解决方案是确保.gitgitdir:指向父.git文件夹中的有效工作树文件夹-无论在何处居住。

在正常情况下,应将其设置为:

gitdir: ../.git/worktrees/this-tree-name