gpt4 book ai didi

Git - 裸仓库不能有主分支的工作树 - 为什么?

转载 作者:IT王子 更新时间:2023-10-29 00:37:51 25 4
gpt4 key购买 nike

我正在开发一些服务器端软件来进行 merge 。通过使用 git worktree 可以检查一个给定的分支以获得一个裸仓库并将另一个分支 merge 到其中。它非常快,即使是大型存储库也是如此。

唯一的异常(exception)似乎是 merge 到 master。当我执行 git worktree add/tmp/path/to/worktree master 时,出现错误:

fatal: 'master' is already checked out at '/path/to/bare/repo'

但这显然不是真的,git worktree list 给出:

/path/to/bare/repo (bare)

...当然,该路径上没有工作树,只有您期望的裸 repo 文件。

更新:我联系了 git 维护者,他们一致认为这可能是一个错误。我从他们那里得到了一个初步的补丁来测试。此外,我还能够在没有补丁的情况下重现期望的行为。

在这一点上,我不完全确定边界条件或根本原因是什么,可能会有来自 git 的修复。

最佳答案

原来这是 git 中的一个错误,从 2.5 及更高版本中的工作树实现开始。

裸仓库仍然有一个 HEAD reflink。 git(直到并包括 2.10)将链接指向的任何内容视为新克隆程序的默认分支,并且(错误地)将其视为在事件工作树上。

我已经从 git 维护者那里收到了一个补丁来修复这个行为,它似乎可以工作。或者,应该可以在 bare repo 上使用 update-ref 暂时从 master 切换。

我将测试这两个选项。

关于Git - 裸仓库不能有主分支的工作树 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39882988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com