0

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

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

当我输入 egworktree-mastergit rev-parse --show-toplevel使用 git version运行时2.17.1,它正确地将我指向工作树根目录。

当我现在在基于ubuntu:20.04运行版本2.25.1的 git 的 Docker 容器中执行相同操作时,我得到了

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

这是这个特定版本的问题吗?或者 git 是否使用了一些在 Docker 容器中不起作用的奇怪魔法?

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

4

1 回答 1

0

好,我知道了。

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

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)。

于 2021-10-23T07:08:06.780 回答