我可以为空的 Git 存储库创建工作树吗?

Can I create a worktree for an empty Git repo?

我有一个空的 Git 存储库(即它不包含任何提交)。有没有办法使用 git worktree add 命令(带有 --no-checkout 选项)为此回购创建工作树?我的意思是指示 Git 不要将新创建的工作树与任何 HEAD 相关联。

在完全空的存储库中,不能有分支,因为每个分支名称必须标识一个实际的现有提交。1但是,主工作树必须 某个分支上。所以 Git 把它放在一个不存在的分支上,Git 调用了一个 unborn 分支(在各种消息和内部代码中)和一个 orphan 分支(在像 git checkout --orphan 这样的标志中)。

理论上,git worktree add 也可以允许 --orphan,在未出生的分支上放置一个新的工作树。但是,它目前没有这样做。如果您希望为 Git 编写允许它执行此操作的新代码,并将其发送给 Git 维护人员,它可能是包含在未来 Git 版本中的候选者。包含某种相当有说服力的用例可能是个好主意。

在那之前,您不能这样做:您必须至少进行一次初始提交(然后允许创建无限数量的分支名称)。


1这个约束有点武断,但 Git 无论如何都是如此,所以必须接受它(或重写 Git)。