创建 GIT 工作树的问题

问题描述 投票:0回答:1

我有一个 GIT 存储库,我想从中创建一个工作树。存储库看起来像:

alpha
  .git
  Part a
  Part b

我执行命令 git

worktree add ../beta beta
(beta 是 alpha 中的一个分支)。我得到:

beta
  .git
  alpha
    Part a
    Part b

我希望副本工作树看起来像原始的,只是检查了分支测试版:

beta
  .git
  Part a
  Part b

我做错了什么?

git git-worktree
1个回答
0
投票

可能是 alpha 存储库坏了。

如评论所述,

git fsck
是检查是否有任何问题的正确工具。

使用 Git 2.41(2023 年第 2 季度),“

git fsck
(man) 学会了检查其他工作树中的索引文件,就像“
git gc
(man) 荣誉它们作为锚点。

参见 commit 8d3e7ea(2023 年 2 月 26 日),以及 commit 592ec63commit fb64ca5commit 8840069(2023 年 2 月 24 日),由 Jeff King (

peff
).
(由 Junio C Hamano 合并 --
gitster
--
commit 2d019f4,2023 年 3 月 17 日)

fsck
:提及索引错误的文件路径

签字人:Jeff King

如果我们在索引文件中遇到错误,我们可能会这样说:

error: 1234abcd: invalid sha1 pointer in resolve-undo

但是如果您有多个工作树,每个工作树都有自己的索引,那么了解哪个文件有问题会非常有帮助。

因此,让我们通过各种

index-fsck
功能将这条路径传递下去,并在适当的地方使用它。
在这个补丁之后你应该得到这样的东西:

error: 1234abcd: invalid sha1 pointer in resolve-undo of .git/worktrees/wt/index

这有点冗长,但由于关键是您通常不应该看到它,所以我们最好在更多细节方面犯错。

我还在“

fsck --name-objects
”使用的名称中添加了索引文件名,如果我们发现对象丢失等,它将显示
这在那里稍微改变了规则,因为该选项声称写入可以提供给 rev-parse 的名称。
但是没有修订语法来访问另一个工作树的索引,所以我们能做的最好的就是编写一些人类可能会理解的东西。

我确实注意保留当前工作树的现有“

:file
”语法。
所以丑陋的输出应该只在实际需要时才启动。

© www.soinside.com 2019 - 2024. All rights reserved.