我有一个 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
我做错了什么?
可能是 alpha 存储库坏了。
git fsck
是检查是否有任何问题的正确工具。
git fsck
”(man) 学会了检查其他工作树中的索引文件,就像“git gc
”(man) 荣誉它们作为锚点。
参见 commit 8d3e7ea(2023 年 2 月 26 日),以及 commit 592ec63、commit fb64ca5、commit 8840069(2023 年 2 月 24 日),由 Jeff King (
peff
).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
所以丑陋的输出应该只在实际需要时才启动。