git工作树不是存储库

问题描述 投票:2回答:3

我正在尝试为实时Web服务器设置远程回购。教会我设置方法的方法是在钩子目录中创建一个后接收文件,如下所示:

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

因此,实时Web文件夹中没有git文件夹。

但是,如果我将文件添加到工作树中,则无法将其添加到我的git repo中。它说:致命的:不是git存储库(或任何挂载parent的父对象)。

[我首先意识到这可能不是一个好主意,但是我喜欢我的托管服务具有一键安装选项,例如,轻松设置WordPress的事实。

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

git githooks
3个回答
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检测到/var/repo/site.git工作树中的任何修改。


0
投票

或者按照Von的建议通过命令行传递,或者如果您打算在该存储库中进行大量操作,请设置环境变量GIT_DIR和GIT_WORK_TREE来节省您的键入时间。


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

© www.soinside.com 2019 - 2024. All rights reserved.