繁体   English   中英

git 工作树不是存储库

[英]git work tree not a repository

我正在尝试为实时 Web 服务器设置远程存储库。 我被教导设置它的方法是在 hooks 目录中制作一个 post-receive 文件,如下所示:

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

以便实时 Web 文件夹中没有 git 文件夹。

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

我意识到这首先可能不是一个好主意,但我喜欢这样一个事实,即我的托管服务具有一键安装选项,例如,这使得设置 WordPress 变得容易。

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

任何使用选项--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/repo/site.git检测/var/www/domain.com工作树中的任何修改。

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

git version 2.17.1 ,工作树文件夹包含一个小的.git文件,其中包含:

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

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

致命:不是 git 存储库

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

在任何情况下,此错误消息的通用解决方案是确保.git : gitdir:指向父.git文件夹中的有效工作树文件夹 - 任何可能驻留的位置。

在正常情况下,这应该设置为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM