为什么我会变得"致命:不是 git 存储库".' 在 git 工作树中查找顶级目录时?



我目前正在修补 git 工作树,突然遇到了一个问题。我尝试了两种方法,其中有和没有裸克隆,这里描述:

https://infrequently.org/2021/07/worktrees-step-by-step/和 https://svij.org/blog/2017/04/14/mit-git-worktree-mehrere-arbeitsverzeichnisse-managen/(德国)

我当前的目录设置如下所示:

$ tree -aL 1
.
├── worktree-branch1
├── worktree-master
└── .git

当我输入例如worktree-master并使用 git 版本运行git rev-parse --show-toplevel2.17.1它正确地将我指向工作树根。

当我现在在基于 git 的运行版本2.25.1的 Docker 容器中做同样的事情ubuntu:20.04我得到

$ git rev-parse --show-toplevel
fatal: not a git repository: /home/me/git-project/.git/worktrees/worktree-master

这是此特定版本的问题吗?还是 git 使用了某种在 Docker 容器中不起作用的奇怪魔法?

是否有解决方法来获取工作树顶级目录?

好的,我知道了。

问题是,我正在使用类似的东西运行容器

REPO_DIR="$(git rev-parse --show-toplevel)"
docker run -it --rm -v "$(REPO_DIR):$(REPO_DIR)" ubuntu:20.04 bash

在工作树内部,无需工作树即可工作,因为所有 git 需求都位于./.git内部。

现在 - 使用工作树 - git 尝试访问../.git鉴于我发布的命令不可用。

我现在需要的优化是获取父目录的工作树和裸克隆共享(通常应该是REPO_DIR的父目录)。